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