Как обновить / изменить LINQ EntitySet? - PullRequest
3 голосов
/ 17 февраля 2010

В моих классах, сгенерированных LINQ to SQL, у меня есть несколько классов, содержащих EntitySets.

Все выглядит отлично, пока мне не нужно изменить EntitySet (добавить, удалить некоторые отношения). Я думал, что это сработает, делая что-то вроде:

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

Затем, когда я пытаюсь отправить изменения, я могу получить исключение дублирующегося ключа, что означает, что он не очищает старые действия перед назначением новых, и некоторые из них могут повторяться; я должен сделать это вручную?

Каков наилучший способ сделать это (обновить EntitySet)? Предложения?

Thnx

Ответы [ 3 ]

2 голосов
/ 17 февраля 2010

Похоже, я должен сделать это вручную. Я имею в виду сначала удалить отношения (EntitySet):

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

И после этого назначьте «новый» EntitySet:

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

Я заставил это работать, но ... Нужно ли применять 2 SubmitChanges () к базе данных? Разве это не лучший способ сделать это?

1 голос
/ 17 февраля 2010

Разве это не будет проще?

user.UserActions.Clear();
user.UserActions.AddRange(GetSelectedActions());
context.SubmitChanges();
0 голосов
/ 15 сентября 2011

В связях с базой данных SQL был ли установлен набор каскадного удаления? Вам нужен этот набор и классы, восстанавливающие, чтобы решить это.

...