实体框架代码首先是一对多的关系

时间:2014-08-11 14:00:05

标签: asp.net-mvc entity-framework asp.net-mvc-5

我正试图通过RequestDiscussion表格建立一对多的关系。暂停代码工作正常,但我想将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; }
    }

1 个答案:

答案 0 :(得分:3)

正如@Ghukas所指出的,没有什么要求你将DiscussionId作为你实体的财产。事实上,它并没有真正做任何Request有一个集合Discussion,但这是语法糖,如果你不想直接从你的{{1}访问讨论,你实际上甚至不需要该属性实例。

实际创建关系的是您的Request属性。您没有指定存储外键的实际属性,但幕后实体框架为您创建一个属性,因此在Discussion.Request表上,您将有一个名为dbo.Discussions的列,其中将用于保持这种关系。并且,它会自动引用Request_ID,因为它是该表的主键。