1
我的实体类是这样的:实体框架代码首先愁楚
public class A{
[Key]
string Name;
B DefaultB;
ICollection<B> Bs;
}
public class B{
[Key]
int Key;
}
public class C{
[Key]
string Key;
A MyA;
B MyB;
public C(A a,B b){
MyA=a;
MyB=b;
}
}
public class MyDbContext:DbContext{
public DbSet<A> As
public DbSet<B> Bs
public DbSet<C> Cs
}
测试代码是这样的:
main(){
A a=new A();
B b=new B();
a.addB(B);
MyDbContext m=new MyDbContext();
m.As.Add(a);
m.SaveChanges();
C c=new C(a,b);
m.Cs.Add(c);
m.SaveChanges();
}
问题是,当我加入C至的背景下,它会尝试在上下文中再次添加a和b,这会导致异常,因为它们已经在其中。这不应该发生。
我该如何解决这个问题?
感谢
不应该有例外。 'a'和'b'只存在一次(每个实体我只看到一个'new''''''''''''''''''''''''''''''''''''''''''''')你会得到什么例外? – Slauma
我得到一个DatabaseUpdate异常,因为A的主键已经在数据库中。 (数据库配置为DropCreateAlways。) – Fritsie
上面的代码会得到一个* Update *异常?有没有显示的SaveChanges调用? (你可以编辑你的问题来澄清这一点。) – Slauma