gpt4 book ai didi

c# - EF-core OnModelCreating 方法中的依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-05 00:42:09 25 4
gpt4 key购买 nike

我想在 DbContextOnModelCreating 方法中调用我自己的一些服务。我需要做什么?

我可以通过 DbContext 构造函数注入(inject)服务。但它似乎不够有效,因为该方法在应用程序启动时被调用一次,我必须为它增肥整个 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");
}
);
...
}

上面的代码可以换成那个吗:

public PortalContext(DbContextOptions<PortalContext> options) : base(options)
{
}

...

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
...
var passwordService = GetPasswordService(); // How?
entity<User>().HasData(
new User
{
UserName = "admin",
Password = passwordService.EncryptPassword("passw0rd");
}
);
...
}

最佳答案

使用

this.Database.GetService<IPasswordService>();

它是一个扩展方法,位于 Microsoft.EntityFrameworkCore.Infrastructure 命名空间

关于c# - EF-core OnModelCreating 方法中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57352187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com