C# 在ASP.Net Core 1.0中注册通用EntityFrameworkCore DbContext
我试图在C# 在ASP.Net Core 1.0中注册通用EntityFrameworkCore DbContext,c#,asp.net-mvc,generics,entity-framework-core,asp.net-core-1.0,C#,Asp.net Mvc,Generics,Entity Framework Core,Asp.net Core 1.0,我试图在ASP.Net Core 1.0中使用泛型DbContext,但出现以下错误: ArgumentException: Type 'idmin.data.IdminDataContext`1[System.Int32]' does not have a default constructor Parameter name: type 以下是IdminDataContext的定义: public class IdminDataContext<TKey> : DbContext
ASP.Net Core 1.0
中使用泛型DbContext,但出现以下错误:
ArgumentException: Type 'idmin.data.IdminDataContext`1[System.Int32]' does not have a default constructor Parameter name: type
以下是IdminDataContext的定义:
public class IdminDataContext<TKey> : DbContext where TKey : IEquatable<TKey>
{
public IdminDataContext(DbContextOptions<IdminDataContext<TKey>> options) : base(options)
{
}
public DbSet<Idmin.Models.Client<TKey>> Clients { get; set; }
}
public类IdminDataContext:DbContext其中TKey:IEquatable
{
公共IdminDataContext(DbContextOptions选项):基本(选项)
{
}
公共数据库集客户端{get;set;}
}
下面是我如何在startup类中注册它的
public void ConfigureServices(IServiceCollection services)
{
var connection = "my connection string";
services.AddDbContext<IdminDataContext<int>>(options => options.UseSqlServer(connection));
services.AddMvc();
}
public void配置服务(IServiceCollection服务)
{
var connection=“我的连接字符串”;
services.AddDbContext(options=>options.UseSqlServer(connection));
services.AddMvc();
}
我尝试在IdminDataContext类中添加默认构造函数,但没有帮助。
知道我在这里遗漏了什么吗?我发现了问题。我犯了一个愚蠢的错误。我没有在控制器中使用构造函数注入,而是使用操作方法注入,这导致了Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder的CreateModel方法出现异常。通过将依赖项注入移动到构造函数而不是操作方法注入,修复了此问题。我也有同样的问题。我将我的接口注入控制器操作(索引)。现在我在我的控制器中添加了一个构造函数,并在那里注入了接口,它就工作了。但我不太明白动作法注射有什么问题。