【问题标题】:Entity Framework 6.2.0 does not generate some classes(database-first)Entity Framework 6.2.0 不生成某些类(数据库优先)
【发布时间】:2018-05-15 06:08:42
【问题描述】:

这是 EF 非常奇怪的行为,我不知道如何解决它。

这是我在 MSSQL Management Studio 中的实体:

那么,生成ADO.NET Entity Data Model之后:

缺少一些实体(HistoryFabric、HistoryFurniture、ProductFabric)。任何想法如何解决这个问题?

更新:

缺失实体之一的数据类型(所有缺失的实体具有相同的结构):

【问题讨论】:

  • 表格中每一列的数据类型是什么?
  • @john-c int 和 nvarchar
  • 显示部分缺失实体的代码
  • 生成实体时是否有警告?另外,检查是否配置了正确的连接字符串。
  • 如果这是一个一对多的映射表,它就不是一个类。它只会显示为其他表的引用属性。

标签: c# database entity-framework


【解决方案1】:

这是一个一对多的映射表,它不会是一个类。它只会显示为其他表的引用属性。您将不得不探索它并找出 EF 将您的外键表的属性命名为什么,例如 intelesense。

它将不在您的外键表中。所以像这样。

var hJenny = ctxDB.History.Where(h => h.ID == 8675309).FirstOrDefault();
var val = hJenny.ProductArticle.SomeColumn;

或者如果你想在查询中使用。

var hJenny = ctxDB.History.Where(h => h.ID == 8675309 && h.ProductArticle.Author == 'Jenny').FirstOrDefault();

【讨论】:

  • 似乎这是正确的答案,但我如何访问它(例如进行查询)?我还是不明白。
  • 用一个例子更新了答案。
  • 要记住的底线...如果 EF 看到一个表中只有外键,它只会将其用作外键所在的两个表之间的引用属性。它知道或认为它是一个一对多的映射表。
  • 如果有人找到这个答案,有一个扩展版本 - stackoverflow.com/a/4255078/6844662
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 2013-07-10
  • 2013-06-13
  • 2017-05-31
  • 1970-01-01
  • 2013-09-23
相关资源
最近更新 更多