Entity framework 4 如何在实体框架设计器中建立多对多关系

Entity framework 4 如何在实体框架设计器中建立多对多关系,entity-framework-4,many-to-many,Entity Framework 4,Many To Many,我是一名NHibernate开发人员,试图在一个爱好项目中尝试实体框架。我习惯于使用Fluent NHibernate在代码中指定映射数据。请原谅Microsoft认为不应允许开发人员编写代码的想法,我正在尝试使用实体框架的visual designer图面(通过在visual Studio中打开.edmx文件获得)创建映射 我不知道如何建立多对多的关系!我已经从数据库中“更新了模型”,但是我得到了与连接表(只包含外键和它自己的主键)对应的新实体的两个一对多关系 到目前为止,所有通过点击实体和关

我是一名NHibernate开发人员,试图在一个爱好项目中尝试实体框架。我习惯于使用Fluent NHibernate在代码中指定映射数据。请原谅Microsoft认为不应允许开发人员编写代码的想法,我正在尝试使用实体框架的visual designer图面(通过在visual Studio中打开.edmx文件获得)创建映射

我不知道如何建立多对多的关系!我已经从数据库中“更新了模型”,但是我得到了与连接表(只包含外键和它自己的主键)对应的新实体的两个一对多关系


到目前为止,所有通过点击实体和关系来解决这个问题的尝试都失败了。有人能给我一个指针吗?

您的连接表必须是MS所称的“”-它必须只包含两个外键,而不包含其他列。在您的情况下,这意味着您必须删除主键列。

将关联添加到模型时,您可以选择两个表中的每一个,并在关系的两侧选择“许多”。当生成数据库脚本时,将为您创建一个只有两个键的联接表


顺便说一下:如果您不喜欢先使用模型,而更愿意对实体框架进行代码研究“代码优先”开发。如果您愿意,也可以先创建数据库。

我从数据库开始。但是根据ladenedge的说法,我的连接表不能有自己的主键。酷。这将被称为数据库优先设计。知道一个框架如何翻译数据库总是很棘手的。天哪。真正地我一直在攻击这些任意的限制。联接表的主键是compund,由两个外键组成。对于这种类型的表,这是一个很好的“正常”db设计习惯。而且,它不是一个“任意”限制。如果您有任何其他列,那么EF需要一个实体来存储这些属性,因此需要中间实体。我认为“纯”联接表有自己的主键和外键是合理的典型。正常到足以让EF预测场景。这种“限制”(即没有单独主键的要求)是对模型更新功能的限制、对视觉设计表面的限制,还是对EF的总体映射能力的限制?换句话说,即使我有一个单独的主键,我是否可以手动修改.edmx XML以创建多对多映射?