我正在使用.net MVC。我在项目中已 启用了迁移 ,此操作已成功完成。但是我在 Migrations> Configrations.cs 中遇到错误。错误如下。
CS0311:类型'BabyStore.DAL.StoreContext'不能用作通用类型或方法'DbMigrationsConfiguration'中的类型参数'TContext'。没有从“ BabyStore.DAL.StoreContext”到“ System.Data.Entity.DbContext”的隐式引用转换
我已启用以下迁移
PM>Enable-Migrations -ContextTypeName BabyStore.DAL.StoreContext
BabyStore.DAL.ContextStore.cs的代码是
namespace BabyStore.DAL
{
public class StoreContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
}
最后,出现错误的代码如下 BabyStore.Migrations.Configurations.cs
namespace BabyStore.Migrations
{
using System.Data.Entity.Migrations;
internal sealed class Configuration : DbMigrationsConfiguration<BabyStore.DAL.StoreContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(BabyStore.DAL.StoreContext _context)
{
var categories = new List<Category>
{
new Category { Name = "Clothes"},
new Category { Name = "Play and Toy" }
};
categories.ForEach(c => _context.Categories.AddOrUpdate(p => p.Name, c));
_context.SaveChanges();
var products = new List<Product>
{
new Product {Name="Sleep Suit", Desccription="For Sleeping wear",Price=100,CategoryID=categories.Single(c=>c.Name=="Clouths").ID },
new Product {Name="Vest", Desccription="For Sleeping wear",Price=200,CategoryID=categories.Single(c=>c.Name=="Clouths").ID}
};
products.ForEach(c => _context.Products.AddOrUpdate(p => p.Name, c));
_context.SaveChange();
}
}
}
内部密封类Configuration:DbMigrationsConfiguration 行中出现错误
答案 0 :(得分:1)
如何强制迁移?使用-force参数
PM>Enable-Migrations -ContextTypeName BabyStore.DAL.StoreContext -force
我认为这里有拼写错误。把衣服换成衣服
new Product {Name="Sleep Suit", Desccription="For Sleeping wear",Price=100,CategoryID=categories.Single(c=>c.Name=="Cloths").ID },
new Product {Name="Vest", Description="For Sleeping wear",Price=200,CategoryID=categories.Single(c=>c.Name=="Cloths").ID}
我已经检查了您所参考的书,该书是带有Entity Framework CSS的ASP.net MVC,它的仓库是https://github.com/Apress/asp.net-mvc-w-entity-framework-css。如果您检查该程序包,它将使用与.net core不同的“ EntityFramework.6.1.3”。
您可以在Visual Studio中重新创建项目,这次选择ASP.NET Web应用程序(.NET Framework)。问题是由于不同的实体框架包。请参阅此EntityFramework Core automatic migrations,以在asp.net核心上设置自动迁移。
答案 1 :(得分:0)
查看class signature显示出,通用参数TContext
被限制为类型DbContext
。
public class DbMigrationsConfiguration<TContext> : System.Data.Entity.Migrations.DbMigrationsConfiguration where TContext : DbContext
修改您的StoreContext
以继承System.Data.Entity.DbContext
。
public class StoreContext : DbContext