这是我的问题。我有2个模型(Person,Event)和EF和modelbuilder我生成一个预订表(IdPerson和IdEvent作为属性)。 所以在我的数据库中它是正确的,我有3个表(人,事件和预订),有很多关系。但我在Visual Studio中只有2个模型(由于自生成表,预订不存在)。 使用我的控制器我想为Person写一个动作来控制一个事件,我必须在我的桌子上写一些关于数据库的预订,但它不作为模型存在,所以我不能这样做。 我该怎么办? 我应该创建一个Booking模型并删除我的模型构建器吗?
答案 0 :(得分:0)
我认为这是模型的第一种方法。
只有2个对象的原因是,默认情况下,EF不会为关节表创建对象。它创建的是导航属性(Entity Framework - Navigation Property Basics)。在一对多方案中,父对象内的导航属性包含外部/子表中的实体集合。在多对多场景中,每个实体的导航属性将只包含其他实体的集合。
答案 1 :(得分:0)
当你使用像EF这样的ORM时,你可以坐下来让ORM管理这些中间表。
您可以使用
person.Events.Add(event)
或
event.People.Add(event)
和EF处理所有内容并在该表中插入personId
和eventId
行。
在这里您可以找到完整的样本: http://blogs.msdn.com/b/wriju/archive/2011/05/14/code-first-ef-4-1-building-many-to-many-relationship.aspx