我有附加對象DbSet問題。實體框架6 - 添加家長帶着孩子包含其他孩子
class Word
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID {get;set;}
public virtual ICollection<Translation> Translations {get;set;}
public virtual ICollection<Inflection> Inflections {get;set;}
}
class Inflection
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID {get;set;}
public virtual Word Word {get;set;}
}
class Translation
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID {get;set;}
public virtual Word Word {get;set;}
public virtual ICollection<Sentence> Sentences {get;set;}
}
class Sentence
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID {get;set;}
public virtual Translation Translation {get; set;}
}
我這樣做:
DatabaseContext.UserWord.Add(entity);
DatabaseContext.SaveChanges();
這裏是我的人際關係的配置:
modelBuilder.Entity<Translation>()
.HasRequired(x => x.Word)
.WithMany(x => x.Translations);
modelBuilder.Entity<Inflection>()
.HasRequired(x => x.Word)
.WithMany(x => x.Inflections);
modelBuilder.Entity<Sentence>()
.HasRequired(x => x.Translation)
.WithMany(x => x.Sentences);
我嘗試創建Word對象:
{
"Id": "GUID"
"Translations": [
{
"Id": "GUID",
"Sentences": [
{
"Id": "GUID",
}
]
}
],
"Inflections": [
{
"Id": "GUID",
}
]
}
但「DatabaseContext。 SaveChanges()「拋出異常:
INSERT語句與FOREIGN KEY約束條件 「FK_dbo.Sentence_dbo.Word_WordId」衝突。衝突發生於數據庫 「tempDatabase」,表「dbo.Word」,列「ID」。本聲明 被終止。
一切都OK了下面的Word對象:
{
"Id": "GUID"
"Translations": [
{
"Id": "GUID"
}
],
"Inflections": [
{
"Id": "GUID",
}
]
}
我該怎麼辦錯了嗎? 你能幫我嗎?
有些事情不對 - 錯誤消息指出'「FK_dbo.Sentence_dbo.Word_WordId」'FK,但你已經證明了什麼沒有這種關係。 –