0

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

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

为了管理我的数据库中的汽车模型,我创建了一个内部DbContext有一个DbSet<Car>属性的类。这很好,但我觉得额外的DbContext课程是没有必要的。有没有办法以Car自己管理自己的方式编写我的 Model 类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();

这可能吗?

4

2 回答 2

3

您可以以这种方式包装DbContext它,但它可能会使您实现的功能超出您的预期,以便在失去性能的同时使其工作。

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

这会导致糟糕的设计并违反关注点分离原则

不要试图以糟糕的设计为代价减少代码行数。

于 2013-10-05T20:50:35.117 回答
0

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

于 2013-10-05T23:03:44.480 回答