在ASP.Net Core 1.0中註冊通用EntityFrameworkCore DbContext

asp.net-core-1.0 asp.net-mvc c# entity-framework-core generics

我試圖在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類中添加默認構造函數,但它沒有幫助。知道我在這裡缺少什麼嗎?

一般承認的答案

我找到了問題。這是我的愚蠢錯誤。而不是在Controller中使用構造函數注入我使用了動作方法注入,這導致Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder的CreateModel方法中的異常。通過將依賴注入移動到構造函數而不是操作方法注入來解決此問題。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow