Я получил проект, в котором сначала используется код EF6. У меня есть 2 класса, в которых установлены отношения друг к другу, то же самое устанавливается в Fluent API.Entity framework 6 код сначала один к одному, а не один к одному
Когда я создаю родительский/дочерний объект на одном и том же шаге, все в порядке и сохраняется, но когда я сначала создаю родителя, сохраните его, а затем я хочу добавить ребенка, я получил исключение, которое гласит, что эти два объекта в соотношении 1 к 0..1, и он не сохраняется.
Есть ли способ создать только родительский элемент, а затем добавить к нему ребенка?
Модель класса:
public class Parent
{
public int ParentId {get; set;}
public virtual ICollection<Child> Children {get; set;}
}
public class Child
{
public int ChildId {get; set;}
public virtual Parent Parent {get; set;}
}
Fluent API:
modelBuilder.Entity<Child>()
.HasRequired<Parent>(s => s.Parent)
.WithMany(s => s.Children)
.HasForeignKey(s => s.ParentId);
В базе данных я вижу внешнего ключа ParentId
. Родитель может существовать без ребенка, если я прав. Все сохраняется с dbContext.SaveChanges()
Исключение:
Exception thrown: 'System.Exception' in Project.dll
Additional information: Multiplicity constraint violated. The role 'Child_Parent_Target' of the relationship 'Project.DAL.Child_Parent' has multiplicity 1 or 0..1.
Таким образом, вы хотите, чтобы изменить отношение от одного до многих один к одному? – user449689
Я тоже об этом думал, но сначала я хотел бы знать, есть ли способ заставить его работать в текущих отношениях, также у меня нет подсказки, откуда находится EF с отношением «1 к 0..1» , Я хотел узнать, откуда эта проблема, поэтому я могу взглянуть на нее и посмотреть, можно ли ее исправлять или требуется изменение отношений. – Mony
Пожалуйста, обновите вопрос, отправляя точное исключение, которое вы получаете – user449689