我在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);
}
}
}
没有从“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。
你的
UserContext
继承了DbContext
类吗?
当您有一个调用及其接口但您忘记让该类继承该接口时,您会收到此消息。
类 UserContext :MyInterface
只需让您的上下文
UserContext
继承自 DbContext
类,如以下代码所示,就可以开始了:
public class UserContext : DbContext
{
public UserContext (DbContextOptions<UserContext > options)
: base(options)
{ }
public DbSet<User> Users{ get; set; }
}
检查您安装 Microsoft.AspNet.Identity.EntityFrameworkCore 而不是 Microsoft.AspNetCore.Identity.EntityFrameworkCore 的 nuget 包;
AspNet 而不是 AspNetCore
应该这样做