为什么Database First EF会跳过某些表的映射?

时间:2011-05-25 16:30:06

标签: entity-framework-4 database-first ef-database-first

我正在使用Entity Framework 4并使用Database First绑定,而EF并没有为我的一些表生成实体。我没有收到任何错误,无论我从设计图面的“从数据库更新模型”弹出菜单中选择要生成的表多少次,模型中仍然缺少相同的表。

我在向导中没有错误。他们只是没有生成。有线索吗?

6 个答案:

答案 0 :(得分:9)

EF需要桌面上的主键。 EF不会映射无法找到的表或派生主键。如果所有列都可以为空,则它不能假定主键。如果一个或多个列不可为空,则EF显然会为该表派生主键。

答案 1 :(得分:3)

EF将忽略没有主键的表。

答案 2 :(得分:0)

我能想到的选项:

  • 您是否勾选了这些表格旁边的框?

  • 您之前添加过它们,然后删除它们的实体但是保留表的缓存吗?

  • 如果是这样,您可以从实体浏览器窗口中删除它们并重新添加它们 或者手动添加实体并在映射窗口中定义它们映射到的表。

  • 也许表被分类为关系而不是实体?

  • 您可以手动添加实体,并在映射窗口中选择它们映射到的表。

答案 3 :(得分:0)

当您使用具有某些不同字段类型的表时,可能是SQL Server中的层次结构。

答案 4 :(得分:0)

实际上,在我的情况下,它不起作用,因为我使用hierarchyid字段作为主键,EF不使用此字段类型,因此,它没有导入表,因为需要有效的PK。

答案 5 :(得分:0)

如果没有主键表在EF上自动跳过,其他你将值修复为非空。