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

问题描述

| 我正在使用Entity Framework 4和Database First绑定,并且EF没有为我的一些表生成实体。我没有收到任何错误,并且无论我从设计图面上的“从数据库更新模型”弹出菜单中选择要生成的表的次数是多少,模型中仍然缺少相同的表。 我在向导中没有任何错误。它们只是不生成。有什么线索吗?     

解决方法

EF在表上需要一个主键。 EF不会映射无法为其找到或导出主键的表。如果所有列都是可空的,则不能假定主键。如果一个或多个列不可为空,则EF显然会派生该表的主键。     ,EF将忽略没有主键的表。     ,我能想到的选择: 您是否勾选了这些表格旁边的框? 您之前是否添加了它们,然后删除了它们的实体,但保留了表的缓存? 如果是这样,您可以从实体浏览器窗口中删除它们,然后重新添加它们 或手动添加实体并在映射窗口中定义它们映射到的表。 也许表被分类为关系而不是实体? 您可以手动添加实体并在映射窗口中选择它们映射到的表。     ,实际上,在我的情况下,它不起作用,因为我使用architectureid字段作为主键,而EF不适用于此字段类型,因此,它没有导入表,因为有效的PK是必须的。     ,一种可能是当您使用具有某些不同字段类型的表作为SQL Server中的层次结构时。     ,如果没有在EF上自动跳过的主键表,则将值固定为非空值。