2011-12-08 14 views
1

SQLデータベース(SQLMetal.exeによって生成されたコード)に新しい項目を挿入できることはわかっています。エンティティテーブルのAttachメソッドを使用して新しいアイテムを添付することも、既存のレコードを編集することもできます。LINQ to SQL CRUD(具体的に挿入する) - 複数の項目を挿入する

ここで、1つの新しいエンティティの代わりに、多くのものが提示されているとします。そのうちのいくつかはすでにテーブル内に存在している可能性があります。プライマリキーがありますが、コレクションに変更されたレコードがある可能性があります。プライマリキーは、変更された内容を把握するための最良の方法ではない可能性があります。

LINQテーブルのすべてのレコードを調べて、その列データをすべて、問題のコレクションのエンティティにあるすべての列データと比較する必要がありますか。これは、どのものが新しいのか、どのものが変更されたのか、どのものが破棄できるのかを教えてくれるでしょう。これは実際にそれを行うのは本当に長い風のように思える。

もっと簡単な方法はありますか?

ありがとうございました。

+0

彼らは(http://stackoverflow.com/questions/637225/how-would-you-write-an-upsert [独自のロール]にしているUPSERTそれを呼び出すが、LINQの中であなたをSQLに-for-linq-to-sql) – sq33G

答えて

0

「UPSERT」はあなたの後ろのものだと思います。

これは基本的にsqlの挿入/更新コマンドの組み合わせです。存在していれば更新します(作成しない場合)。

http://www.databasejournal.com/features/mssql/article.php/3739131/UPSERT-Functionality-in-SQL-Server-2008.htm

+0

私を見ないでください。私はそれをしなかった。 – user738383

+0

@ user738383誰も心配しなくてもそれを削除しました。うまくいけば、上のリンクは、あなたの問題にどこに行くべきかについていくつかの方向性を与えるかもしれない。 – user1231231412

関連する問題