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 excepti开发者_开发知识库on, 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
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?
Wouldn't this be easier?
user.UserActions.Clear();
user.UserActions.AddRange(GetSelectedActions());
context.SubmitChanges();
In the SQL database relationships did you have cascade delete set? You need this set and the classes regenerating to resolve this.
精彩评论