将接口与mvc3 EF中的类绑定

时间:2012-04-09 10:11:43

标签: entity-framework asp.net-mvc-3 class interface

假设我有一些界面:

public interface IIconComponent
{
   // statements ...
}

然后我在我的课程中实现这个界面,如下所示

public class IconComponent : IIconcomponent
{
   // implementing the interface statements ..
}

并在mvc3中创建一个表格,如:

public class IconDBContext : DbContext
{
   public DbSet<IIconComponent> Icon {get; set;} //Is this statement possible 
}

这就是制作用于在表中存储类IconComponent对象的接口类型的对象集。如何在MVC3中执行此操作?

我是否必须为此实现一些模型绑定器?或者,还有其他一些方法吗?

感谢你,

3 个答案:

答案 0 :(得分:2)

EF不支持接口。必须使用实际实现来定义DbSet。一旦你改变它以使用实现,你的动作很可能也会使用它,因为没有理由使用抽象。

答案 1 :(得分:0)

为什么你要使用实体框架是你在它上面创建抽象层,因为你根本就没有使用实体框架,因为实体框架不能使用接口。

答案 2 :(得分:0)

如果确实需要,可以让实体框架类实现接口。使用POCO,它很简单,使用edmx,您可以创建包含接口派生的部分类。但是,正如Ladislav所说,DbSet<IIconComponent>之类的东西是不可能的。

我可以想象你想要使用它的场景,例如处理只接受特定接口的其他应用程序组件,但是要填充EF类。 (前几天,我使用传统的UI图层完成了这一点。)