我对EntityFramework的Code方法相当陌生,当我试图创建引用实体类型的可重用复杂类型时,我会遇到以下错误。
型号:
class Bank
{
public int Code { get; set; }
public string Name { get; set; }
}
class BankAccount
{
public Bank Bank { get; set; }
public int BankId { get; set; }
public int Agency { get; set; }
public int Account { get; set; }
}
class Person
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
public BankAccount BankAccount { get; set; }
}DbContext:
class DemoContext : DbContext
{
public DbSet<Bank> Banks { get; set; }
public DbSet<Person> People { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Bank>().HasKey(b => b.Code);
modelBuilder.ComplexType<BankAccount>();
}
}当我试图添加一个迁移时,我会得到以下错误:
One or more validation errors were detected during model generation:
ComplexTypeProblem.EF.Bank: Name: Each type name in a schema must be unique. Type name 'Bank' is already defined.
ComplexTypeProblem.EF.Bank: : EntityType 'Bank' has no key defined. Define the key for this EntityType.
Banks: EntityType: EntitySet 'Banks' is based on type 'Bank' that has no keys defined.在ComplexType具有指向EntityType的导航属性的情况下,实现这种关系有任何警告吗?
谢谢
发布于 2015-06-01 16:08:35
不能有包含ComplexType的EntityType。只有相反的方法。
ComplexTypes只是实体的属性,它们应该像普通字段一样处理代码。
发布于 2015-06-01 16:57:23
您是否试图为银行/ BankAccounts设置一个1 BankAccounts多个映射?如果是这样,我建议如下:
public partial class Bank
{
public Bank()
{
BankAccounts = new List<BankAccount>();
}
public int Code { get; set;}
public string Name { get; set;}
public virtual ICollection<BankAccount> BankAccounts { get; set;}
}
public partial class BankAccount
{
public int BankId { get; set;}
public int Agency { get; set;}
public int Account { get; set;}
public virtual Bank Bank { get; set;}
}并将OnModelCreating方法更改如下:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Bank>().HasKey(b => b.Code);
modelBuilder.Entity<Bank>().HasMany(m => m.BankAccounts).WithRequired(r => r.Bank).HasForeignKey(f => f.BankId).WillCascadeOnDelete(false);
}https://stackoverflow.com/questions/30577169
复制相似问题