【发布时间】:2019-04-28 02:03:52
【问题描述】:
我正在努力解决这个问题。
我向question 询问了有关在我的通用基础存储库中配置 DBContext 的问题。只有在用户登录后,我才能构造连接字符串,因此我无法在 startup.cs 中注册服务 - 我必须使用构造函数参数来实例化我的 DBContext。
我收到了这个answer,我认为它可以解决问题,但是我在以下工厂类中遇到错误:
public class ContextFactory<T> : IContextFactory<T> : where T : DbContext
{
public T CreateDbContext(string connectionString)
{
var optionsBuilder = new DbContextOptionsBuilder<T>();
optionsBuilder.UseSqlServer(connectionString);
return new T(optionsBuilder.Options);
}
}
错误就行 return new T(optionsBuilder.Options); 是:
无法创建变量类型“T”的实例,因为它没有 有 new() 约束
【问题讨论】:
-
即使你添加了
new()约束,你最终也会得到'T': cannot provide arguments when creating an instance of a variable type。您获得了无效代码。
标签: c# generics asp.net-core entity-framework-core