【问题标题】:MS EntityFramework: how to split entity with inheritance?MS EntityFramework:如何通过继承拆分实体?
【发布时间】:2011-07-22 04:10:29
【问题描述】:

我在数据库中有表名 Transaction。我想要 2 个子类 TransactionA 和 TransactionB。我已经按照这里的描述做到了:http://www.robbagby.com/entity-framework/entity-framework-modeling-table-per-hierarchy-inheritance/comment-page-1/#comment-607

当我使用 T4 模板时,我已经生成了自我跟踪实体。

一切都很好,但只有一件事。我可以看到生成的实体 TransactionA 和 TransactionB,但在上下文对象 (ObjectContext) 中看不到它们。正常吗?如果是这样,如果只能访问 Transaction 类,我如何使用上下文从表中获取 TransactionB?

谢谢

【问题讨论】:

  • 请注意,对 Transaction 的查询(换句话说,对基类而不是派生类的查询会很差)例如,context.Transactions.Count() 将在所有模型中的三个故事,尽管这不是必需的!

标签: entity-framework inheritance self-tracking-entities


【解决方案1】:

这符合预期。事务 A 和 B 派生自基类事务。在您的实体模型中,您可以通过 Transactions 的集合访问它们,如下所示:

Context context = new Context();
List<TransactionB> list = context.Transactions.OfType<TransactionB>().ToList();

【讨论】:

  • 是的,我在做什么,但是为什么在我将此实体添加到模型中后上下文没有 TransactioB 集合?我认为这会更合乎逻辑。
  • 我不知道为什么会这样。但这是设计使然。这可能更合乎逻辑,同意。但是我提供的答案回答了你的问题,不是吗?
猜你喜欢
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多