EntityFramework 4.0:您可以根据数据库中的数据返回不同的类型吗?

时间:2010-04-30 16:01:57

标签: c# entity-framework c#-4.0

我在数据库中有一个Media表。 我也有一个IMedia界面。

我有两种不同的媒体类型实现相同的界面:

1)AudioMedia
2)PictureMedia

我想知道的是,我是否可以使用EntityFramework(我使用的是EDMX文件,但我将模型放在一个单独的库中,关闭了自动代码生成),并根据数据库中的数据,选择什么类型(AutioMedia或PictureMedia)。

因为他们都在实现相同的接口(如果需要我可以改为抽象类),我想在你可以指定它应该是什么类的路上的某个地方。

我或许应该指出,我有一个继承自ObjectContext的类来访问对象。也许有些东西可以做到?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您可以使用继承:AudioMediaPictureMedia都将从公共MediaBase抽象类继承,由表表示。特定于AudioMediaPictureMedia的成员将存储在单独的表中。

此技术称为“每类型表”策略,并由实体模型设计器支持。

您也可以使用“每个具体类型的表”策略,但我不认为设计师支持它(但实体框架支持它)

查看此链接了解详情:http://blogs.msdn.com/adonet/archive/2007/03/15/inheritance-in-the-entity-framework.aspx