public class ContextEx:DbContext
{
public void modelcreate(DbModelBuilder modelbuilder)
{
Database.SetInitializer<ContextEx>(null);
modelbuilder.Entity<Category>().ToTable("Categories");
modelbuilder.Entity<Category>().HasKey(c=> new {c.CategoryID});
modelbuilder.Entity<CartItem>().ToTable("CartItems");
modelbuilder.Entity<CartItem>().HasKey(ci=> new {ci.CartId});
modelbuilder.Entity<Product>().ToTable("Products");
modelbuilder.Entity<Product>().HasKey(p=> new {p.ProductID});
modelbuilder.Entity<Order>().ToTable("Orders");
modelbuilder.Entity<Order>().HasKey(en=> new { en.OrderId});
modelbuilder.Entity<OrderDetail>().ToTable("OrderDetails");
modelbuilder.Entity<OrderDetail>().HasKey(od=> new {od.OrderDetailId });
}
public DbSet<Category> Categoriesdb { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> Details { get; set; }
public DbSet<CartItem> Items { get; set; }
}
/********************Second Class*****************************/
namespace wing.tip.toys.dal.model
{
public class Second
{
public static void Main(string[] args)
{
try
{
ContextEx cont = new ContextEx();
List<Category> Category = cont.Categoriesdb.ToList<Category>();
}
catch (Exception e)
{
Console.WriteLine(e.Message.ToString());
}
}
}
}
此处在Line - List Category = cont.Categoriesdb.ToList(); 它给我带来了以下例外:
在模型生成期间检测到一个或多个验证错误:
\ tSystem.Data.Entity.Edm.EdmEntityType :: EntityType&#39; CartItem&#39;没有定义键。定义此EntityType的键。 \ tSystem.Data.Entity.Edm.EdmEntitySet:EntityType:EntitySet&#39; Items&#39;是基于类型&#39; CartItem&#39;没有定义键。
我很困惑该怎么做。我到处搜索但没有得到理想的解决方案。请帮我。
答案 0 :(得分:2)
您的代码可能存在的一个问题是,而不是
protected override void OnModelCreating( DbModelBuilder modelbuilder )
你有
public void modelcreate(DbModelBuilder modelbuilder)
因此永远不会调用元数据设置方法。