我可以将实体框架模型逻辑封装到模型本身吗?

时间:2013-10-05 20:36:58

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

使用Entity Framework时,我为每个所需的模型制作标准的C#类。所以,如果我有一个汽车模型,它可能如下所示:

public class Car
{
    public string Model { get; set; }
}

为了管理我的数据库中的Car Models,我创建了一个DbContext类,其中包含DbSet<Car>属性。这很好,但我觉得不需要额外的DbContext课程。有没有办法以我自己管理自己Car的方式编写我的DbSet<Car>模型类?

public class MyDbContextClass : DbContext
{
    public DbSet<Car> Cars { get; set; }
}

而不是以下工作流程:

var db = new MyDbContextClass();
var cars = db.Cars.ToList();

我正在尝试查看是否可以使用以下工作流程:

var cars = Car.ToList();

这可能吗?

2 个答案:

答案 0 :(得分:3)

你可以用这种方式包装DbContext,但它可能会让你实现更多的工作,以便在失去性能的同时使其工作。

我认为你最好保持它的意图,因为我看不到你提到的任何好处。 您将DbContext耦合到模型并尝试创建超级对象 - 负责数据表示和数据访问层的对象。

这会导致设计错误,而不是Separation of Concerns Principle

不要试图减少不良设计价格中的代码行数。

答案 1 :(得分:0)

似乎你想要一种叫做Active Record Patterns的东西。 EF的设计并未考虑到这种模式。 Insteda强迫它这样做,也许只是使用另一个ORM?像http://www.castleproject.org/projects/activerecord/

一样
相关问题