3
對於首次涉足代碼的EF來說,請原諒我。我的問題是我不想將外鍵屬性添加到模型,並根據MSDN使用流暢的API沒有問題,但我無法找出我目前的情況正確的使用。它看起來很簡單:EF6中的外鍵問題CF
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,因爲單個實體不能被識別爲異常的來源。通過在您的實體類型中公開外鍵屬性,可以更輕鬆地處理保存時的異常。
有人能幫我弄清楚創建模型時需要做的正確的流利調用嗎?