views:

661

answers:

2

In my LINQ to SQL generated classes I have some classes containing EntitySets.

Everything looks great until I need to modify the EntitySet (add, delete some relationships). I thought that it was going to work doing something like:

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

Then when I try to submit changes, I may get a duplicate key exception, that means it is not clearing the old actions before assigning the new ones and some of them may be repeated; do I have to do it manually ?

What is the best way to do this (update the EntitySet) ? Suggestions?

Thnx

+1  A: 

It appears that I have to do it manually. I mean first delete the relationships (EntitySet):

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

And after that, assign the "new" EntitySet:

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

I made it work doing that but... DO I have to apply 2 SubmitChanges() to database? Isn't it a better way to do it?

Carlos Castillo
+1  A: 

Wouldn't this be easier?

user.UserActions.Clear();
user.UserActions.AddRange(GetSelectedActions());
context.SubmitChanges();
Sam
No man that didn't work it keeps throwing this ex: "Cannot add an entity with a key that is already in use."
Carlos Castillo