簡體   English   中英

CS0311 C# 該類型不能用作泛型類型或方法中的類型參數“TContext”。 EntityFrameworkCore

[英]CS0311 C# The type cannot be used as type parameter 'TContext' in the generic type or method. EntityFrameworkCore

我指定了我在 Startup.cs 文件的實體項目中創建的上下文 class 以及我為 connectionString 創建的 connectionString 數據。 但是為什么我會收到這個錯誤?

錯誤消息:嚴重性代碼描述項目文件行抑制 State 錯誤 CS0311 類型“Microsoft.ApplicationInsights.Extensibility.Implementation.UserContext”不能用作泛型類型或方法“EntityFrameworkServiceCollectionExtensions.AddDbContext(IServiceCollection, Action,服務生命周期,服務生命周期)'。 沒有從“Microsoft.ApplicationInsights.Extensibility.Implementation.UserContext”到“Microsoft.EntityFrameworkCore.DbContext”的隱式引用轉換。 EntityFramework2 C:\Users\xsamu\source\repos\EntityFramework2\EntityFramework2\Startup.cs 29 活動

啟動 class:

namespace EntityFramework2
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddDbContext<UserContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}

實體配置:

namespace EntityFramework2
{
    public class EntityConfiguration : IEntityTypeConfiguration<User>
    {
        public void Configure(EntityTypeBuilder<User> builder)
        {
            builder.HasOne<Department>(navigationExpression: s => s.Name)
                .WithOne(sa => sa.User)
                .HasForeignKey<Department>(sa => sa.DepartmentId);

            builder.HasOne<Title>(navigationExpression: s => s.TitleCode)
               .WithOne(sa => sa.User)
               .HasForeignKey<Title>(sa => sa.TitleId);

            builder.HasOne<Position>(navigationExpression: s => s.PositionCode)
               .WithOne(sa => sa.User)
               .HasForeignKey<Position>(sa => sa.PositionId);
        }
    }
}

沒有從“Microsoft.ApplicationInsights.Extensibility.Implementation.UserContext”到“Microsoft.EntityFrameworkCore.DbContext”的隱式引用轉換。

該消息告訴您,您的UserContext class 不繼承自DbContext ,這是強制性的。

它應該看起來像這樣:

public class BloggingContext : DbContext
{
    public BloggingContext(DbContextOptions<BloggingContext> options)
        : base(options)
    { }

    public DbSet<Blog> Blogs { get; set; }
}

有關詳細信息,請參閱EF Core 教程配置 DbContext

您的UserContext是否繼承DbContext class?

只需像下面的代碼一樣讓您的上下文UserContextDbContext Class 繼承,您就可以使用 go:

public class UserContext : DbContext
{
    public UserContext (DbContextOptions<UserContext > options)
        : base(options)
    { }

    public DbSet<User> Users{ get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM