使用代码优先实体框架继承

时间:2014-04-10 04:49:16

标签: c# asp.net-mvc entity-framework inheritance

在代码优先实体框架中存在一些继承问题。

我使用代码优先模式实现了继承(也就是说,我有一个基类Request,其他类将它子类化为NewSpaceRequest等。

就功能而言,框架/语言似乎没有提供太多内容。

例如,我希望有一个包含所有请求列表的视图,具有不同的文本,具体取决于请求的类型。我无法找到一个简单的方法来做到这一点,因为我总是不得不对请求进行类型转换,这意味着我失去了所有的子类功能我能够告诉我的课程。

无论如何,我找到了一个讨厌的方法,我在视图中有一个请求列表。我想允许用户单击一个链接(列表中的每个请求一个),然后发送到一个根据请求类型改变的动作。问题是,到目前为止,我的所有请求都是Request类型(我相信这是foreach的要求)所以我不知道它们到底是什么。

在使用代码优先的继承时,我一直遇到这样的小问题。难道我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

就功能而言,框架/语言似乎并没有提供更多功能

不,因为那不是EF的责任。它可以很好地为您实现正确的子类型,然后它的工作就结束了。 EF是关于数据的。行为在程序员的板块上。

在您的代码中,您可以使用整个继承和多态来获得您想要的行为。基类可以有一个子类重写的方法来执行所需的操作。因此,您应该在基类中指示链接单击此方法。

  

我失去了(...)我能说出我上课的能力

因此,如果您利用这种多态性机制,就不必知道您正在处理的特定类型。这与"干"进行继承的方式完全相同。 POCO。每当你觉得需要做if (instance is MySubType)这样的事情时,通常会出现一些设计缺陷。