MVC3.0 Model主外键关联问题 设置foreignkey后取不到数据,null

qizbigbird 2012-04-01 03:02: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
高手指点!
...全文
842 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
铜树 2013-08-10
  • 打赏
  • 举报
回复


接上:如果报以上异常该如何的处理,请指教



尼古拉特斯拉 2013-01-17
  • 打赏
  • 举报
回复
对了 正确的是怎么写的 麻烦楼主贴代码
开山怪不怪 2012-12-06
  • 打赏
  • 举报
回复
应该是这样,上面有点小问题 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; } }
开山怪不怪 2012-12-06
  • 打赏
  • 举报
回复
我一直这样用 例如: 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; } } 没错啊
good-code 2012-11-19
  • 打赏
  • 举报
回复
JFJFJF
尼古拉特斯拉 2012-06-28
  • 打赏
  • 举报
回复
应该这样子吧

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; }
}


主外表要搞清楚,主外键要分明
qizbigbird 2012-06-28
  • 打赏
  • 举报
回复
谢谢ls关注,不是这样的
qizbigbird 2012-04-01
  • 打赏
  • 举报
回复
回一楼:ForeignKey内参数,小写是对应变量名

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

不过,有没方法直接让两个ProjectID相关联?
honkerhero 2012-04-01
  • 打赏
  • 举报
回复
你确定大小写无关?

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧