0
我正在使用Visual Studio 2010,C#4.0和實體框架5.0。實體框架5.0,代碼首先,關係,流暢的API和播種數據庫
我(簡體)型號有:
public class Case
{
public int CaseID { get; set; }
public int CaseStatusID { get; set; }
public DateTime DateOfNotification { get; set; }
public User User { get; set; }
public Case()
{
}
}
public class User
{
public int UserID {get;set;}
public string Name { get; set; }
public Case Case { get; set; }
public User()
{
}
}
數據上下文是:
public class DataContext : DbContext
{
public DbSet<Case> Cases { get; set; }
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Case>()
.HasKey(m => m.CaseID)
.Property(m => m.CaseID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<Case>()
.HasRequired(m => m.User)
.WithRequiredPrincipal(m => m.Case);
}
}
但我是播種的數據庫:
protected override void Seed(DataContext context)
{
Case Case = new Case();
Case.CaseStatusID = 1;
Case.DateOfNotification = DateTime.Today;
Case.User = new User();
Case.User.UserID = Case.CaseID;
Case.User.UsersFamilyNameEnc = "Smith";
Case.User.UsersGivenNameEnc = "Petra";
context.Cases.AddOrUpdate(Case);
context.SaveChanges();
}
使用遷移沒有種子數據庫部署沒有錯誤,我可以手動填充數據庫。
如果我註釋掉User
類,數據庫會正確種子。
的問題
當我加入user
關係和運行遷移命令我得到這個錯誤
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
我看不到EntityValidationErrors任何破發點並沒有達到。
問題似乎是在關係中。我試過不同的方式來指定這個,但結果總是一樣的。
答案
Getting exact error type in from DbValidationException 是溶液的第一部分 - 理解錯誤。然後我需要添加
catch (DbEntityValidationException dbEx)
{
StringBuilder sb = new StringBuilder();
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
sb.AppendFormat("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
}
}
throw new Exception(sb.ToString());
}
(其他兩個答案的amalgm)與嘗試,以獲得errorto軟件包管理器控制檯。
最後,我發現我的「真實」模型包含以下內容:
[NotMapped]
[Required(ErrorMessage = "The family name/surname is required")]
[Display(Name = "Family name/surname")]
public string UserName { get; set; }
我認爲NotMapped
將排除領域,但Required
似乎覆蓋。一旦我爲此付出價值,它就開始工作了。
要查看'EntityValidationErrors',請檢查此:http://stackoverflow.com/questions/5345890/getting-exact-error-type-in-from-dbvalidationexception – lightbricko
謝謝 - 我現在添加了,但我無法看到跟蹤輸出顯示的位置 - 我應該在哪裏看到;它不在調試窗口中。謝謝。 –
你一直在創建一個新用戶。你確定這是你想要的嗎? – user1908061