2014-04-10 51 views
0

只用代码优先的实体框架继承一些问题。用代码优先的实体框架继承

我实现继承使用代码优先模式(也就是,我有一个基类Request和其它类继承它NewSpaceRequest .etc。

似乎框架/语言没有提供远远超出这个至于功能

例如,我想有一个视图有一个所有的请求的列表,不同的文本取决于请求的类型我不能找出一个简单的方法来做到这一点因为我总是需要注册到Request,这意味着我失去了我所有的子类功能,我曾有过。

无论如何,我发现了一个奇怪的方法,我有一个视图中的请求列表。我想让用户点击一个链接(列表中的每个请求都有一个链接),并发送给一个根据请求类型而改变的动作。问题是,到目前为止,我所有的请求都是Request(我相信这是foreach的一个要求),所以我不知道它们是什么。

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

+0

为什么你需要上传到'Request'? – haim770

+0

要明确:你的'Request'不是HttpRequest,而是你自己定义的类,是吗? –

+0

@ haim770:在我的情况下,正确使用foreach。投射到var更无用。 –

回答

1

看来,框架/语言没有提供远远超出这个只要功能

没有,因为这不是EF的责任。它为你实现了正确的子类型做了很好的工作,然后它的工作就结束了。 EF是关于数据的。行为在程序员的盘子上。

在你的代码中,你可以使用整个继承和多态性库来获得你想要的行为。基类可以有一个子类重写的方法来执行所需的操作。所以你应该直接点击链接到基类中的这个方法。

我失去(...)我的能力,告诉我有什么类

所以,如果你能够利用多态性的这个机制,它没有必要知道你正在处理的特定类型。这与使用“干”POCO进行继承时的方式完全相同。无论何时您觉得需要做类似if (instance is MySubType)的事情,通常会出现一些设计缺陷。