【发布时间】:2021-05-10 20:36:57
【问题描述】:
我在 .NET Framework 中有以下代码优先数据库的设置,并在寻找感觉应该有更好的方法将 CRUD 的 DatabaseContext 继承到数据库。
我正在使用 Autofac 依赖注入,并打算让单独的类继承某种形式的 BaseDatabaseContext 类,以免我在编写的每个类中都注入 DatabaseContext 类。
一个示例数据服务类:-
public class UserRepo : BaseDatabaseContext, IUserRepo {
public User WithCredentials(string emailAddress, string password) {
return _database.Users.Where(x => x.EmailAddress == emailAddress && x.PasswordHash == password).SingleOrDefault();
}
}
BaseDatabaseContext 类:
public class BaseDatabaseContext {
public readonly DatabaseContext _database;
public BaseDatabaseContext() {
_database = new DatabaseContext();
}
}
DatabaseContext 类:
public class DatabaseContext : DbContext {
public DatabaseContext() : base("MainDatabase") {
}
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
/// stuff here
}
public DbSet<User> Users { get; set; }
// ... more DbSet's here
}
上述方法有效,但我非常不喜欢每次都新建一个新的 DatabaseContext()。我觉得我可以通过依赖注入来实现这一点,但我想不通。
我的总体目标是让BaseDatabaseContext 基本上有一个名为的公共变量,例如,database,它很容易使用,当被UserRepo 类继承时,我可以调用database.Users.XXX例如。
谁能指出我偏离轨道的地方?还是我已经实施(确实有效)的最佳方式?
【问题讨论】:
标签: c# .net entity-framework autofac dbcontext