在WPF项目中使用EF。
我有两个实体如下:
public class Entity1
{
...
public virtual Entity2 Entity2 { get; set; }
...
}
public class Entity2
{
...
public virtual Entity1 Entity1 { get; set; }
...
}
以这种方式设置关联:
modelBuilder.Entity<Entity1>().HasRequired(r => r.Entity2).WithOptional(s => s.entity1);
这是我的样本:
//TESTCODE
Entity1 entity1=new Entity1(){Name="test"};
Entity2 entity2 = new Entity2();
entity1.Entity2=Entity2;
Entity2 entity2=new Entity2();
Context context = new Context();
context.Entities1.Add(entity1);
context.SaveChanges();//OK
#regionpart1
context.Entities2.Remove(entity1.Entity2);
context.SaveChanges();//NEEDED!!!
#endregion
entity1.Entity2=entity2;
entity1.Entity2.entity1=entity1;
context.SaveChanges(); //halts without region part1!!
如果我不删除part1区域3行,为什么会停止?
我想我错过了一个方法来管理流畅的API部分,这样我就不需要在设置新值之前显式删除旧的entity1.Entity2对象了吗?
我得到的例外是: {“发生了参照完整性约束违规:关系一端的'T_Entity2.Id'的属性值与属性值不匹配 “T_Entity1.Id”在另一端。“
提前谢谢,我希望这很清楚。