在我的LINQ to SQL生成的类中,我有一些包含EntitySets的类。
在我需要修改EntitySet(添加,删除一些关系)之前,一切看起来都很棒。 我认为它可以起到类似的作用:
User.Actions = newUserActions; //This is how I used it with NHibernate
然后,当我尝试提交更改时,我可能会获得重复的密钥异常,这意味着它在分配新的操作之前不会清除旧的操作,并且其中一些可能会重复;我必须手动完成吗?
执行此操作的最佳方法是什么(更新EntitySet)?建议?
日Thnx
答案 0 :(得分:2)
看来我必须手动完成。我的意思是先删除关系(EntitySet):
//The EntitySet is user.UserActions
DataBaseContext.UserActions.DeleteAllOnSubmit(user.UserActions);
DataBaseContext.SubmitChanges();
然后,分配“新”EntitySet:
user.UserActions.Assign(GetSelectedActions());
DataBaseContext.SubmitChanges();
我做到了这一点,但...... 我必须将2个SubmitChanges()应用于数据库吗? 这不是一个更好的方法吗?
答案 1 :(得分:1)
这不会更容易吗?
user.UserActions.Clear();
user.UserActions.AddRange(GetSelectedActions());
context.SubmitChanges();
答案 2 :(得分:0)
在SQL数据库关系中你有没有级联删除集?你需要这个集合并重新生成类来解决这个问题。