我正试图通过Request
和Discussion
表格建立一对多的关系。暂停代码工作正常,但我想将Request.ID
属性设为外键,而不是像DiscussionId
那样有额外的属性。我尝试了几种方法,但都失败了。
public class Request
{
public int ID { get; set; }
// other properties
public int DiscussionId { get; set; }
public virtual ICollection<Discussion> Discussion { get; set; }
}
public class Discussion
{
public int ID { get; set; }
public string Message { get; set; }
public virtual Request Request { get; set; }
}
答案 0 :(得分:3)
正如@Ghukas所指出的,没有什么要求你将DiscussionId
作为你实体的财产。事实上,它并没有真正做任何。 Request
有一个集合Discussion
,但这是语法糖,如果你不想直接从你的{{1}访问讨论,你实际上甚至不需要该属性实例。
实际创建关系的是您的Request
属性。您没有指定存储外键的实际属性,但幕后实体框架为您创建一个属性,因此在Discussion.Request
表上,您将有一个名为dbo.Discussions
的列,其中将用于保持这种关系。并且,它会自动引用Request_ID
,因为它是该表的主键。