我得到了一个项目,其中使用了EF6代码。我有2个类,其中设置了一对多关系,在Fluent API中也设置了相同的关系。实体框架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;}
}
流利的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