У меня возникла проблема с добавлением объекта в DbSet.Entity Framework 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 заявление противоречит ограничение внешнего ключа "FK_dbo.Sentence_dbo.Word_WordId". Конфликт произошел в базе данных «tempDatabase», таблице «dbo.Word», в столбце «Id». Заявление завершено .
Все нормально для объекта ниже Слова:
{
"Id": "GUID"
"Translations": [
{
"Id": "GUID"
}
],
"Inflections": [
{
"Id": "GUID",
}
]
}
Что я сделал не так? Вы можете мне помочь?
Что-то не так - сообщение об ошибке указывает '' FK_dbo.Sentence_dbo.Word_WordId ''FK, но нет таких отношений в том, что вы показали. –