是否可以将实体框架模型逻辑封装到模型本身中

本文关键字:模型 封装 实体 框架 是否 | 更新日期: 2023-09-27 18:33:59

使用实体框架时,我为每个所需的模型创建标准 C# 类。因此,如果我有一个汽车模型,它可能如下所示:

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

为了管理数据库中的汽车模型,我创建了一个包含DbSet<Car>属性的DbContext类。这很好,但我觉得没有必要额外的DbContext课。有没有办法以它自己管理自己的DbSet<Car>的方式编写我的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耦合到模型并尝试创建超级对象 - 负责数据表示和数据访问层的对象。

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

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

似乎您想要一种称为活动记录模式的东西。EF 在设计时并未考虑此模式。强迫它这样做的本能,也许只是使用另一个ORM代替?喜欢 http://www.castleproject.org/projects/activerecord/