具有多对多关系的实体框架generetad表

时间:2015-10-15 09:32:50

标签: c# entity-framework models controllers

这是我的问题。我有2个模型(Person,Event)和EF和modelbuilder我生成一个预订表(IdPerson和IdEvent作为属性)。 所以在我的数据库中它是正确的,我有3个表(人,事件和预订),有很多关系。但我在Visual Studio中只有2个模型(由于自生成表,预订不存在)。 使用我的控制器我想为Person写一个动作来控制一个事件,我必须在我的桌子上写一些关于数据库的预订,但它不作为模型存在,所以我不能这样做。 我该怎么办? 我应该创建一个Booking模型并删除我的模型构建器吗?

2 个答案:

答案 0 :(得分:0)

我认为这是模型的第一种方法。

只有2个对象的原因是,默认情况下,EF不会为关节表创建对象。它创建的是导航属性(Entity Framework - Navigation Property Basics)。在一对多方案中,父对象内的导航属性包含外部/子表中的实体集合。在多对多场景中,每个实体的导航属性将只包含其他实体的集合。

答案 1 :(得分:0)

当你使用像EF这样的ORM时,你可以坐下来让ORM管理这些中间表。

您可以使用

person.Events.Add(event)

event.People.Add(event)

和EF处理所有内容并在该表中插入personIdeventId行。

在这里您可以找到完整的样本: http://blogs.msdn.com/b/wriju/archive/2011/05/14/code-first-ef-4-1-building-many-to-many-relationship.aspx