![](/img/trans.png)
[英]ASP.NET MVC: Error CS0311: The Type 'XYZ' can't be used as a parameter 'TContext' in generic method
[英]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?
只需像下面的代碼一樣讓您的上下文UserContext
從DbContext
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.