0

私のアプリケーションの詳細に入らずに、これが linq-to-sql でも可能かどうか興味があります。

データベース内のレコードと InsertOnSubmit メソッド呼び出しを使用して最近追加されたレコードの両方調べる LINQ ステートメントを作成できますか? Existsメソッドを作成しようとしていますが、 SubmitChangesメソッドを呼び出した場合にのみ機能するようです。そのため、メモリ内のレコードではなく、データベース内のレコードのみを見ているようです。

これを達成する唯一の方法は、最初にデータベースをチェックして (LINQ を使用)、次に変更セットをチェックして (GetChangeset を使用して) 挿入コレクションを挿入することですか?

linq-to-sql は SQL を 1 つのステートメントに最適化しないことを認識していますが、ループの外でSubmitChangesを 1 回呼び出すだけで、コードがよりきれいになります。

御時間ありがとうございます。

4

2 に答える 2

1

データベース内のレコードと InsertOnSubmit メソッド呼び出しを使用して最近追加されたレコードの両方を調べる LINQ ステートメントを作成できますか?

いいえ、箱から出してすぐに使用したい場合。

Linq-to-SQL では、SQL 選択ステートメントがデータベース サーバーに送信され、そこで実行されることに注意してください。

Entity-Framework は、変更を追跡するために処理する各オブジェクトの状態を維持します。

その事実を考えると、次のように、追加された状態のオブジェクトを簡単にクエリできますObjectContect

using(var context = new yourDataContext())
{
  var recentlyAddedObjects = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added);

  var addedObjects = recentlyAddedObjects.Select(entry => entry.Entity)
                    .OfType<ResourceType>().ToList();
}

ResourceTypeタイプを realに変更することを忘れないでくださいType

オブジェクトの状態について読むのに適したリソースは、オブジェクトの状態と変更の追跡です。

于 2013-06-06T19:57:27.583 に答える