3

在我的 LINQ to SQL 生成的类中,我有一些包含 EntitySets 的类。

在我需要修改 EntitySet(添加、删除一些关系)之前,一切看起来都很棒。我认为它会起作用,例如:

User.Actions = newUserActions;   //This is how I used it with NHibernate

然后当我尝试提交更改时,我可能会得到一个重复键异常,这意味着它在分配新操作之前没有清除旧操作,其中一些可能会重复;我必须手动完成吗?

执行此操作的最佳方法是什么(更新 EntitySet)?建议?

谢谢

4

3 回答 3

2

看来我必须手动完成。我的意思是首先删除关系(EntitySet):

//The EntitySet is user.UserActions
DataBaseContext.UserActions.DeleteAllOnSubmit(user.UserActions);
DataBaseContext.SubmitChanges();

之后,分配“新”实体集:

user.UserActions.Assign(GetSelectedActions());
DataBaseContext.SubmitChanges();

我做到了,但是...我必须将 2 SubmitChanges() 应用于数据库吗?这不是更好的方法吗?

于 2010-02-17T04:51:45.370 回答
1

这不是更容易吗?

user.UserActions.Clear();
user.UserActions.AddRange(GetSelectedActions());
context.SubmitChanges();
于 2010-02-17T04:59:23.350 回答
0

在 SQL 数据库关系中,您是否设置了级联删除集?您需要这个集合和重新生成的类来解决这个问题。

于 2011-09-15T10:47:14.633 回答