读书人

MVC3.0 Model主外键关联有关问题 设置

发布时间: 2012-12-23 11:28:15 作者: rapoo

MVC3.0 Model主外键关联问题 设置foreignkey后取不到数据,null
本帖最后由 qizbigbird 于 2012-04-01 15:12:12 编辑 原错误信息:
Unable to determine the principal end of an association between the types 'ResearchProjectManagement.Models.DProject' and 'ResearchProjectManagement.Models.ProjectBudget'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.


public class ProjectsinForschung
{
[Key]
public Guid ID { get; set; }
public Guid ProjectID { get; set; }
public DateTime Date { get; set; }
public string Comment { get; set; }

public virtual Project project { get; set; }
}

public class Project
{
[Key]
[ForeignKey("projectinforschung")]
public Guid ProjectID { get; set; }
public DateTime CreateDate { get; set; }
public DateTime FinishDate { get; set; }
public DateTime CutOffDate { get; set; }
public string Comment { get; set; }

public virtual ProjectsinForschung projectinforschung { get; set; }
}

public class ProjectsinForschung
{
[Key]
public Guid ID { get; set; }
public Guid ProjectID { get; set; }
public DateTime Date { get; set; }
public string Comment { get; set; }

public virtual Project project { get; set; }
}

取值代码:

List<ProjectsInDepartment> datesource = db.prosindeps.ToList();

datesource依次展开到ProjectsinForschung类时,取到null
高手指点!
[解决办法]
你确定大小写无关?
[解决办法]
回一楼:ForeignKey内参数,小写是对应变量名

已找到原因,ProjectID.ProjectID竟然对应到了ProjectsinForschung.ID,而不是,ProjectsinForschung.ProjectID,把ProjectsinForschung的主键设为ProjectID就行了。

不过,有没方法直接让两个ProjectID相关联?
------解决方案--------------------


应该这样子吧


public class ProjectsinForschung
{
[Key]
public Guid ID { get; set; }
[ForeignKey("project")]
public Guid ProjectID { get; set; }
public DateTime Date { get; set; }
public string Comment { get; set; }

public virtual Project project { get; set; }
}

public class Project
{
[Key]
public Guid ProjectID { get; set; }
public DateTime CreateDate { get; set; }
public DateTime FinishDate { get; set; }
public DateTime CutOffDate { get; set; }
public string Comment { get; set; }

public virtual ProjectsinForschung projectinforschung { get; set; }
}


主外表要搞清楚,主外键要分明
[解决办法]
谢谢ls关注,不是这样的
[解决办法]
JFJFJF
[解决办法]
我一直这样用
例如:
public class ProjectsinForschung
{
[Key]
public Guid ID { get; set; }

public Guid ProjectID { get; set; }

public virtual Project project { get; set; }
}

public class Project
{
[Key]
public Guid ProjectID { get; set; }

}
没错啊
[解决办法]
应该是这样,上面有点小问题
public class ProjectsinForschung
{
[Key]
public Guid ID { get; set; }

public Guid ProjectID { get; set; }//这个外键是:表名+表主键名

public virtual Project project { get; set; }//这个是表
}

public class Project


{
[Key]
public Guid ID { get; set; }

}

读书人网 >asp.net

热点推荐