【问题标题】:Changing Inherited Types in Entity Framework更改实体框架中的继承类型
【发布时间】:2010-09-29 16:23:21
【问题描述】:

我看到这里有一个类似的问题,但我认为它不是很清楚,所以我正在创建另一个:Entity Framework: Inheritance, change object type

我有一个继承自实体 Person 的实体 Student。

在某些时候,人可能会成为学生。

Entity Framework 4 中是否有任何方法可以在不使用存储过程或创建新实体的情况下处理此问题。

【问题讨论】:

  • 这是一个损坏的对象模型。在 OOP 中,实例不能更改类型。 EF 不会将此功能添加到 C#/.NET。为此,您应该使用组合,而不是继承。
  • 我的印象是学生是否是一个人或学生是否有一个人。也许您可以指向我定义它的链接?
  • 一个对象只能有一种类型。所以你不能创建一个RedDog 类型并且也有一个BigDog 类型,因为Dog 可以是大的 红色(Clifford)。我在这里写过这个问题:blogs.teamb.com/craigstuntz/2008/07/17/37825
  • 我看到这是一篇基于 EF4 的旧帖子。 Entity (EF6) 的最新版本中是否还存在此限制?

标签: entity-framework entity-framework-4


【解决方案1】:

没有。 EF 继承不支持这种情况。为现有Person 创建Student 的最佳方式是使用存储过程
请注意,这不是一个通过映射连接到 Student 实体的存储过程,而是一个可以从代码中显式调用的单独存储过程。理想情况下,SP 将 PersonID 作为参数,使用该 PersonID 将新行插入到 Student 表中,然后返回一个完整的学生,以便可以立即使用。

【讨论】:

  • 刚刚被这个烧死了。还有一个小时我再也回不来了!
猜你喜欢
  • 1970-01-01
  • 2016-06-02
  • 2013-12-04
  • 2017-09-04
  • 2010-11-24
  • 2011-05-19
  • 2010-10-07
相关资源
最近更新 更多