C# 为实体CodeFirst Ef4定义主键
我想为POCO实体定义一个主键,但我不想用主键属性修饰实体,我想从扩展DbContext的context类中定义它 我知道我应该使用类似于:C# 为实体CodeFirst Ef4定义主键,c#,entity-framework-4,entity,C#,Entity Framework 4,Entity,我想为POCO实体定义一个主键,但我不想用主键属性修饰实体,我想从扩展DbContext的context类中定义它 我知道我应该使用类似于: Entity<Order>().HasKey(x => x.OrderId); Entity().HasKey(x=>x.OrderId); 但是我不知道在我的课堂上怎么做 有什么帮助吗?在您的DbContext-类中,您可以像这样重写关于模型创建的 protected override void OnModelCreating(Mo
Entity<Order>().HasKey(x => x.OrderId);
Entity().HasKey(x=>x.OrderId);
但是我不知道在我的课堂上怎么做
有什么帮助吗?在您的
DbContext
-类中,您可以像这样重写关于模型创建的
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>.HasKey(x => x.OrderId);
base.OnModelCreating(modelBuilder);
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity.HasKey(x=>x.OrderId);
基于模型创建(modelBuilder);
}
您应该创建一个定义上下文的类,然后必须重写OnModelCreating方法。
试试这个:
public class MyContext: DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>().HasKey(x => x.OrderId);
base.OnModelCreating(modelBuilder);
}
}
公共类MyContext:DbContext
{
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasKey(x=>x.OrderId);
基于模型创建(modelBuilder);
}
}
实际上,抛出的stackoverflow异常“System.StackOverflowException”类型的未处理异常发生在mscorlib.dll中,我猜它一直在调用它自己,我发现这是我合理预期的现在每次访问它提供给我的数据库时:支持“DatabaseContext”上下文的模型在数据库创建后发生了更改。手动删除/更新数据库,或使用IDatabaseInitializer实例调用database.SetInitializer。例如,DropCreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并可以选择使用新数据对其进行种子设定。修复后,您必须删除数据库,然后让它再次创建。这不是在您不从其他人处复制时发生的。