是否可以将实体框架模型逻辑封装到模型本身中
本文关键字:模型 封装 实体 框架 是否 | 更新日期: 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/