Entity framework 4 为什么Database First EF会跳过映射某些表?

Entity framework 4 为什么Database First EF会跳过映射某些表?,entity-framework-4,database-first,ef-database-first,Entity Framework 4,Database First,Ef Database First,我使用的是EntityFramework4和数据库优先绑定,EF不会为我的一些表生成实体。我没有收到任何错误,无论我从设计图面上的“从数据库更新模型”弹出菜单中选择要生成的表多少次,模型中仍然缺少相同的表 向导中没有错误。它们只是不被生成。有什么线索吗?我能想到的选项有: 你勾选了那些桌子旁边的复选框了吗 您以前是否添加了它们,然后删除了它们的实体,但保留了表的缓存 如果是这样,您可以从实体浏览器窗口中删除它们并重新添加它们 或者在“映射”窗口中手动添加实体并定义它们映射到的表 也许表被归类为

我使用的是EntityFramework4和数据库优先绑定,EF不会为我的一些表生成实体。我没有收到任何错误,无论我从设计图面上的“从数据库更新模型”弹出菜单中选择要生成的表多少次,模型中仍然缺少相同的表


向导中没有错误。它们只是不被生成。有什么线索吗?

我能想到的选项有:

  • 你勾选了那些桌子旁边的复选框了吗

  • 您以前是否添加了它们,然后删除了它们的实体,但保留了表的缓存

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

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

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

    • EF将忽略没有主键的表

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

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

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

      没有主键表,在EF上自动跳过,否则您将一个值固定为NOTNULL。

      这些表中有主键吗?@Akash,这可能是模式。看起来这些表中的所有字段都可以为空,因此EF可能无法假定PK值。如果你想把你的评论转换成答案,我会接受的。谢谢你的回复,丹尼。正如我在问题中指出的,我已经多次尝试通过向导重新映射它们,但它们从未映射。我还选择了最初创建模型时要绑定到模型中的所有表。如果有必要,我可能可以为它们创建手动映射,但这并不能回答为什么它们不首先映射的问题,也不利于将来从DB更新模型。请尝试从工具箱中添加新实体,不从向导映射。次要澄清-EF不会映射无法找到或派生主键的表。如果所有列都可以为null,它就不能假设主键。没有EF对可为null的列没有问题,它只检查主键。主键不能为null,所以不考虑可为null的条件。好吧,我只能说试试。如果所有列都可以为空,则表将自动映射失败。如果有一个或多个列不可为Null,它将派生主键并映射表。从何处派生主键?