3

LINQ to SQLで生成されたクラスには、EntitySetを含むクラスがいくつかあります。

EntitySetを変更する(いくつかの関係を追加、削除する)必要があるまで、すべてがうまく見えます。私はそれが次のようなことをすることでうまくいくだろうと思った:

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

次に、変更を送信しようとすると、重複キーの例外が発生する場合があります。つまり、新しいアクションを割り当てる前に古いアクションがクリアされておらず、一部のアクションが繰り返される場合があります。手動で行う必要がありますか?

これを行うための最良の方法は何ですか(EntitySetを更新します)?提案?

Thnx

4

3 に答える 3

2

手動でやらなければならないようです。つまり、最初にリレーションシップ(EntitySet)を削除します。

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

その後、「新しい」EntitySetを割り当てます。

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 に答える