早上好,
我们目前正在从EF迁移到使用ADO.NET作为后端。对于EF,注入(inject)连接字符串非常容易。但是,我无法弄清楚如何使用标准服务。当前代码是:
services.AddScoped<IDataCatalogRepository, SqlDataCatalogRepository>();
目前正在通过GitHub上的Dependency Injection测试项目,但未完全了解我的需求。我想做的是:
services.AddScoped<IDataCatalogRepository, SqlDataCatalogRepository>("connectionString")
SqlDataCatalogRepository确实具有connectionString作为其构造函数属性之一。
使用Beta 4,有什么想法吗?
史蒂文·M
最佳答案
您需要的是工厂。您使用的AddScoped方法几乎没有重载,包括带有ImplementationFactory参数的重载。
您的代码如下所示:
private static readonly Func<IServiceProvider, IDataCatalogRepository> repoFactory = (_) =>
{
var connectionString = "get your connection string from somewhere";
return new SqlDataCatalogRepository(connectionString);
}
然后像这样调用AddScoped:
services.AddScoped<IDataCatalogRepository>(repoFactory);
关于dependency-injection - 将ASP.NET 5 DI连接字符串转换为ADO.NET,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30538056/