我可以将实体框架模型逻辑封装到模型本身吗?

问题描述 投票:0回答:2

使用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();

这可能吗?

c# asp.net-mvc entity-framework
2个回答
3
投票

你可以用这种方式包装DbContext,但是它可能会让你实现更多你想要的,以便在失去性能的同时使它工作。

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

这导致了糟糕的设计和对抗Separation of Concerns Principle

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.