在非 ASP.NET 環境(例如控制臺程式、單元測驗或dotnet efCLI 工具)中,我可以使用DbContextOptionsBuilder以下方法替換 EF Core 服務:
builder.ReplaceService<IRelationalDatabaseCreator, MyCreator>();
builder.ReplaceService<IMigrationsAssembly, MyAssembly>();
對于MyCreatoror MyAssembly,它使用型別及其默認建構式。如何用實體替換服務(我可以自定義)?
一些(無效的)代碼來顯示我的意思:
var myCreator = new MyCreator("foo", 123);
builder.Replace<IRelationalDatabaseCreator>(myCreator);
uj5u.com熱心網友回復:
如何用實體替換服務(我可以自定義)?
你不能。
對于
MyCreatororMyAssembly,它使用型別及其默認建構式。
這不太正確(否則您將無法用依賴項替換 EF Core 服務)。
指定的服務實作型別實體是從 DI 容器決議的,因此您可以使用任何現有的建構式依賴注入機制來配置它(例如,類似于 EF Core 提供的構造函式的配置DbContextOptions方式DbContext)。這里唯一需要注意的是,這些依賴項必須在應用服務容器(DbContext注冊的地方)中注冊,因為構建器不允許注冊服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/388557.html
標籤:C# 实体框架 实体框架核心 ef-core-5.0
下一篇:多對多添加身份用戶
