使用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();
这可能吗?
你可以用这种方式包装DbContext
,但是它可能会让你实现更多你想要的,以便在失去性能的同时使它工作。
我认为你最好保持它的方式,因为我没有看到你提到的任何好处。您正在将DbContext
耦合到模型并尝试制作超级对象 - 负责数据表示和数据访问层的对象。
这导致了糟糕的设计和对抗Separation of Concerns Principle
不要试图减少不良设计价格中的代码行数。
似乎你想要一种叫做Active Record Patterns的东西。 EF的设计并未考虑到这种模式。 Insteda强迫它这样做,也许只是使用另一个ORM?像http://www.castleproject.org/projects/activerecord/