我只是使用代碼第一種方法,用於創建數據庫開始。我有以下3個表:代碼第一INSERT語句衝突與外鍵約束
public partial class AccountHolder
{
public int AccountHolderId { get; set; }
public virtual List<Address> Address { get; set; }
}
public partial class Nominee
{
public int NomineeId { get; set; }
public virtual List<Address> Address { get; set; }
}
public partial class Address
{
public int AddressId { get; set; }
public int AccountHolderId { get; set; }
public AccountHolder AccountHolder { get; set; }
public int NomineeId { get; set; }
public Nominee Nominee { get; set; }
}
這裏AccountHolder
和Nominee
都有1 to *
replationship與地址。我爲此使用的流暢API代碼:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Address>().HasRequired(p => p.AccountHolder)
.WithMany(p => p.Address)
.HasForeignKey(p => p.AccountHolderId)
.WillCascadeOnDelete(false);
modelBuilder.Entity<Address>().HasRequired(p => p.Nominee)
.WithMany(p => p.Address)
.HasForeignKey(p => p.NomineeId)
.WillCascadeOnDelete(false);
}
現在我的問題是,每當我試圖在帳戶持有人或代理人將數據插入我得到這個異常:
在賬戶持有插入的情況下
{ 「INSERT語句衝突與外鍵約束\」 FK_dbo.Addresses_dbo.Nominees_NomineeId \」。該衝突發生於數據庫\ 「CodeFirst.BankContext \」,表\ 「dbo.Nominees \」,列「 NomineeId'。\ r \ n聲明有蜜蜂Ñ終止。 「}
在提名插入
{的情況下」 的INSERT語句衝突具有外鍵約束\ 「FK_dbo.Addresses_dbo.AccountHolders_AccountHolderId \」。衝突發生於數據庫\ 「CodeFirst.BankContext \」,表\ 「dbo.AccountHolders \」,列 'AccountHolderId'。\ r \ n該語句已終止。「}
Cananybody請告訴我如何解決這個問題,我在這裏丟失了什麼?
感謝的答案,它的工作原理。但現在每當我將插入提名人或賬戶持有人,我要創建爲賬戶持有插入,並在提名插入的情況下,賬戶持有空對象的情況下,被提名人的空對象,有沒有辦法讓我可以爲這兩種設置的默認值這些導航屬性? – gaurav 2013-03-03 13:30:42
我想你應該插入值,然後使用它,例如你必須在表中插入值,然後使用它。 – 2013-03-03 13:32:46
好吧,但只是爲了好奇心什麼是爲兩者設置默認值的問題? – gaurav 2013-03-03 13:35:41