在ASP.Net Core 1.0中注册通用的EntityFrameworkCore DbContext

3

我正在尝试在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 void ConfigureServices(IServiceCollection services)
{
    var connection = "my connection string";
    services.AddDbContext<IdminDataContext<int>>(options => options.UseSqlServer(connection));

    services.AddMvc();
}

我尝试在IdminDataContext类中添加默认构造函数但没有帮助。 有什么想法我这里可能遗漏了什么吗?
1个回答

3

我发现了一个问题。这是我自己的一个愚蠢错误。我在控制器中使用的不是构造函数注入,而是操作方法注入,导致了在Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder的CreateModel方法中出现异常。通过将依赖项注入到构造函数而不是操作方法注入解决了这个问题。


我也遇到了相同的问题。我将我的接口注入到了控制器操作(Index)中。现在我给我的控制器添加了一个构造函数,并在那里注入了接口,这样就可以正常工作了。但我不太明白操作方法注入有什么问题。 - To Ka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接