表未映射到实体框架数据模型。

5

嗨,我又来问问题了。我开始使用EF,但是遇到了问题。

概览:
我创建了一个EF模型,并发现一个表(名为UserRoles)没有显示在EF模型图中。我尝试通过“更新数据模型”添加它,但向导没有显示要添加的表格(好像已经添加了),我还尝试通过“更新数据模型”向导刷新模型,但没有帮助。

问题说明:
原始数据库图表。
enter image description here
部分EF模型图
enter image description here
我尝试通过“更新数据模型”添加它
enter image description here

我尝试在EF diagram中将实体重命名为“UserRoles”,出现错误消息。 enter image description here

P.S:我认为我已经很好地介绍了问题,但请让我知道您可能需要的任何其他信息。

1个回答

3
现在你正在使用对象工作,不再使用 SQL。
而且在 EF 中,许多对多关系不需要特殊的“实体”,而是需要特定的“关系”。
在 User 类中,你将拥有一个角色列表,在 Roles 类中,你将拥有一个用户列表。这完美地表示了一个简单的多对多关系。
如果你在关系表中至少有另一个属性(例如 “RelationName” 字符串),那么它将存在于 EF 模型中...
编辑: 不确定你需要什么:这只是“对象”方式。想象一下,如果你不使用数据库,你将如何创建这些类:你会在每个关系部分中都做一个其他的列表。但 Sql 无法做到这一点(你不能在数据库中有一个“列表”),所以 Sql 需要一个关系表。但 EF 是一个 ORM,所以是对象,而不是 sql。
编辑 2: 你会在 Code First 中创建你的关系,但它相当明确。 http://blogs.msdn.com/b/wriju/archive/2011/05/14/code-first-ef-4-1-building-many-to-many-relationship.aspx 要获得更多答案,只需谷歌“Entity framework many to many”就可以了。

你是指导航属性的名称为“Roles”吗? - Owais Qureshi
1
是的,Roles是User类中的导航属性,而User是Roles类中的导航属性。也许将这些导航属性重命名会更清晰:首先使用“单数”类(Role而不是Roles),然后将“列表”导航属性命名为“Users”和“Roles”(或者根据您的喜好命名为UserList和RoleList)。 - Raphaël Althaus
谢谢,请给我指一些关于EF中导航属性和M:M的文章。 - Owais Qureshi
非常感谢,你帮了我很多。 - Owais Qureshi
2
不用谢!记住:使用ORM时,要考虑对象而不是SQL! - Raphaël Althaus
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接