1 つのアプリは asp.net で、もう 1 つはバックグラウンドで実行されている Windows サービスです。
バックグラウンドで実行されている Windows サービスは、データベースでいくつかのタスク (読み取りと更新) を実行していますが、ユーザーは asp.net アプリを介してデータベースで他の操作を実行できます。たとえば、Windowsサービスでは、条件を満たすレコードを収集してから、次のように繰り返します。
IQueryable<EntityA> collection = context.EntitiesA.where(<condition>)
foreach (EntityA entity in collection)
{
// do some stuff
}
では、後でループ反復で使用されるレコードをユーザーが変更した場合、そのレコードのどの値が EF で考慮されるのでしょうか? 実行時に取得されたオリジナル:
context.EntitiesA.where(<condition>)
またはユーザーによって変更され、データベースにある新しいものですか?
私の知る限り、反復中に EF は要求に応じて、つまり 1 つずつ取得されるため、次の反復のために次のレコードを読み取るとき、このレコードは から収集されたものに対応します。
context.EntitiesA.where(<condition>)
またはデータベースにあるもの(ユーザーが変更したもの)?
ありがとう!