CS0311 C# 该类型不能用作泛型类型或方法中的类型参数“TContext”。 EntityFrameworkCore

问题描述 投票:0回答:5

我在Startup.cs文件上指定了我在实体项目中创建的上下文类以及我为connectionString创建的connectionString数据。但为什么我会收到此错误?

错误信息: 严重性代码 说明 项目文件行抑制状态 错误 CS0311 类型 'Microsoft.ApplicationInsights.Extensibility.Implementation.UserContext' 不能用作泛型类型中的类型参数“TContext”或 方法 'EntityFrameworkServiceCollectionExtensions.AddDbContext(IServiceCollection, 操作、服务生命周期、服务生命周期)”。 没有隐式引用转换 'Microsoft.ApplicationInsights.Extensibility.Implementation.UserContext' 到 'Microsoft.EntityFrameworkCore.DbContext'。 EntityFramework2 C:\Users\xsamu\source epos\EntityFramework2\EntityFramework2\Startup.cs 29 活动

创业班:

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);
        }
    }
}
c# entity-framework-core ef-fluent-api
5个回答
8
投票

没有从“Microsoft.ApplicationInsights.Extensibility.Implementation.UserContext”到“Microsoft.EntityFrameworkCore.DbContext”的隐式引用转换。

该消息告诉您,您的

UserContext
类不会继承自
DbContext
,这是强制性的。

它应该看起来像这样:

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

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

有关更多信息,请参阅 EF Core 教程配置 DbContext


2
投票

你的

UserContext
继承了
DbContext
类吗?


1
投票

当您有一个调用及其接口但您忘记让该类继承该接口时,您会收到此消息。

类 UserContext :MyInterface


0
投票

只需让您的上下文

UserContext
继承自
DbContext
类,如以下代码所示,就可以开始了:

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

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

0
投票

检查您安装 Microsoft.AspNet.Identity.EntityFrameworkCore 而不是 Microsoft.AspNetCore.Identity.EntityFrameworkCore 的 nuget 包;

AspNet 而不是 AspNetCore

应该这样做

© www.soinside.com 2019 - 2024. All rights reserved.