【发布时间】:2014-01-07 12:13:35
【问题描述】:
对不起,当谈到代码时,我是 EF 的菜鸟。我的问题是我不想将外键属性添加到模型中,根据 MSDN,使用 fluent API 没有问题,但是我无法确定当前情况的正确用途。看起来很简单:
public class Package
{
public Package()
{
Users = new Collection<User>();
}
public Int32 Id {get; set;}
public String Name {get; set;}
public virtual User Creator {get; set;}
public virtual ICollection<User> Users {get; set;}
}
public class User
{
public Int32 Id {get; set;}
public String Name {get; set;}
}
public class PackageContext : DbContext
{
public DbSet<Package> Packages {get; set;}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Package>().HasRequired(p => p.Creator).WithMany();
modelBuilder.Entity<Package>().HasMany(p => p.Users).WithRequired().Map(c => c.MapKey("PackageId"));
base.OnModelCreating(modelBuilder);
}
}
我尝试了许多不同的流畅组合,但没有一个能正常工作。我得到的最常见的例外是:
System.Data.Entity.Infrastructure.DbUpdateException:保存不为其关系公开外键属性的实体时发生错误。 EntityEntries 属性将返回 null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地处理保存时的异常。
有人可以帮我找出创建模型时需要进行的正确流畅调用吗?
【问题讨论】:
标签: c# entity-framework ef-code-first entity-framework-6 ef-fluent-api