1

現在、会計アプリケーション (つまり、Quickbooks) と SQL データベースの間で情報を同期するミドルウェア アプリケーションを作成しています。私は Linq-To-SQL にかなり慣れていないため、現在、単純な問題のように見えたものに苦労しています。

つまり、会計アプリケーションから勘定科目表を照会するロジックがあります (つまり、AR、収入、費用、負債など)。次に、ミドルウェアは、レコードごとに SQL データベースの Accounts テーブルでアカウントを挿入、更新、または削除する必要があるかどうかを判断する必要があります。操作が挿入か削除かを判断するのは非常に簡単でしたが、アカウントが Quickbooks から削除され、SQL データベースから削除する必要がある場合に苦労しています。基本的に、クエリから取得した ListID のリストに ListID が含まれていない Account テーブルからすべてのレコードを削除する Linq-To-Sql クエリを実行したいと思います。Linq-To-Sql でこれを実行する簡単な方法はありますか?

4

4 に答える 4

4

別のクエリでListID(listOfID)のリストを入力したと仮定します。

var accounts = from a in db.Accounts
               where !listOfIDs.Contains(a.ListID)
               select a;
db.Accounts.RemoveAll(accounts);
db.SubmitChanges();
于 2012-06-29T21:16:01.507 に答える
3
db.accounts.Where(x => !ListIDs.Contains(x.ID))
于 2012-06-29T21:19:21.893 に答える
1

前に述べたように、ラムダまたは単純なlinqでリクエストしてください。それから

db.accounts.Attach(yourObject);
db.accounts.DeleteOnSubmit(yourObject);
db.SubmitChanges();

もちろん.. try/catch で保護し、Linq へようこそ !!!

于 2012-06-29T21:28:45.350 に答える
0

使用しているSQLドライバーはわかりませんが、どちらのドライバー(かなり短いリスト)でも、ドライバーがQuickBooksSDKを使用して勘定科目表にアクセスしていることは確かです。SDKには、削除されたエンティティ(アカウントなど)を検索するための特別なクエリがありますListDeletedQuery。原則として、ListDeletedQuery何が削除されたかを知りたい場合は、より効率的に使用できます。ただし、勘定科目表は通常非常に小さいため、リスト全体をスキャンして、不足している要素を見つけることはおそらく許容されます。また、ListDeletedQuery使用しているSQLドライバーによって公開されない場合があります。

于 2012-07-13T22:22:09.240 に答える