2017-02-12 3 views
0

私は、ユーザーの好みのフルーツを格納するテーブルを持っている:Entity Frameworkののdb.BulkInsert(上の削除古いレコード)

CREATE TABLE UserFavouriteFruit (ID int IDENTITY(1, 1) PRIMARY KEY, Username varchar(20), Fruit nvarchar(20), IsDisabled bit DEFAULT(0)); 

INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Peter', 'Apple'); 
INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Peter', 'Pear'); 
INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Peter', 'Orange'); 
INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Paul', 'Water Melon'); 
INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Paul', 'Banana'); 
INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Lucy', 'Apple'); 
INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Lucy', 'Blueberry'); 
INSERT INTO UserFavouriteFruit (Username, Fruit) VALUES ('Mary', 'Strawberry'); 

は、私が好きな果物を更新取得するサードパーティのAPIを呼び出すコンソールアプリケーションを持っていますいくつかの既存のユーザーといくつかの新しいユーザー。いくつかは同じ選択肢を持ち、いくつかは異なるだろう。このアプリケーションがEntity Frameworkのdb.BulkInsert()を呼び出すと、すべての新しいデータがSQL Azureデータベースに挿入されます。

新しいエントリを挿入すると、関連するユーザーの古いエントリのIsDisabledフィールドが1に設定されるように、どのようにメカニズムを設定できるか教えてください。

おかげで、 WY

+0

なぜ古い値を保持しますか?なぜ更新しないのですか? – ErikEJ

答えて

1

MERGEは何が必要です。ネイティブEFはデフォルトでこの機能をサポートしていません。

http://www.zzzprojects.com/entity-framework/library/bulk-merge(無料ではありません)に役立つ拡張機能があります。

文字列ビルダーを使用して、マージを行うT-SQLコマンドを作成するか、MERGEを実行するストアドプロシージャを作成し、ユーザー定義の型を渡してデータセットを渡すことができます。私はストアドプロシージャのルートに行くことをお勧めします、それはまっすぐ前方であり、最も重要なのは、無料です。 :)

関連する問題