我想在OnModelCreating
的{{1}}方法中调用自己的某些服务。我该怎么办?
我可以通过DbContext
构造函数注入服务。但这似乎还不够有效,因为该方法在应用程序启动时被调用一次,因此我必须为此加满整个DbContext类。
DbContext
可以将以上代码替换为以下代码:
public PortalContext(DbContextOptions<PortalContext> options, IPasswordService passwordService) : base(options)
{
this._passwordService = passwordService;
}
...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
...
entity<User>().HasData(
new User
{
UserName = "admin",
Password = this._passwordService.EncryptPassword("passw0rd");
}
);
...
}
答案 0 :(得分:3)
使用
this.Database.GetService<IPasswordService>();
这是一种扩展方法,位于Microsoft.EntityFrameworkCore.Infrastructure
命名空间中