我在数据库中有一个Media表。 我也有一个IMedia界面。
我有两种不同的媒体类型实现相同的界面:
1)AudioMedia
2)PictureMedia
我想知道的是,我是否可以使用EntityFramework(我使用的是EDMX文件,但我将模型放在一个单独的库中,关闭了自动代码生成),并根据数据库中的数据,选择什么类型(AutioMedia或PictureMedia)。
因为他们都在实现相同的接口(如果需要我可以改为抽象类),我想在你可以指定它应该是什么类的路上的某个地方。
我或许应该指出,我有一个继承自ObjectContext的类来访问对象。也许有些东西可以做到?
答案 0 :(得分:2)
你有一个共同的ID字段吗?
看看
和
将其更改为抽象基类几乎肯定会更容易使用Entity Framework进行建模。
答案 1 :(得分:2)
您可以使用继承:AudioMedia
和PictureMedia
都将从公共MediaBase
抽象类继承,由表表示。特定于AudioMedia
和PictureMedia
的成员将存储在单独的表中。
此技术称为“每类型表”策略,并由实体模型设计器支持。
您也可以使用“每个具体类型的表”策略,但我不认为设计师支持它(但实体框架支持它)
查看此链接了解详情:http://blogs.msdn.com/adonet/archive/2007/03/15/inheritance-in-the-entity-framework.aspx