0

私は 2 つの同様のクエリを持っています。最初のクエリは次のとおりです。

var activatedSerialNumbers = (from activation in entities.Activations
                              where !canceledActivationsIds.Contains(activation.Id)
                              where activation.CustomerId == customerId
                              join licenseConfiguration in entities.LicenseConfigurations
                                              on activation.Id equals licenseConfiguration.ActivationId
                              where licenseConfiguration.ProductId == productId
                              join activatedSerialNumber in entities.ActivatedSerialNumbers
                                              on activation.Id equals activatedSerialNumber.ActivationId
                             where deactivatedSams.All(dsn => dsn.ToLower() != 
                                              activatedSerialNumber.Name.ToLower())
                             select new SamWithLicense
                             {
                                     Name = activatedSerialNumber.Name,
                                     Features = licenseConfiguration.LicenseFeatures
                             }).ToList();

二番目:

var activationsForSam = (from activation in entities.Activations
                        where !canceledActivationsIds.Contains(activation.Id)
                        where activation.CustomerId == customerId
                        let activatedSerialNumbers = activation.ActivatedSerialNumbers
                                                    .Select(sn => sn.Name.ToLower())
                        where activatedSerialNumbers.Contains(loweredSn)
                        join licenseConfiguration in entities.LicenseConfigurations
                                             on activation.Id equals activatedProduct.ActivationId
                        select new SamWithLicense
                        {
                                   Name = selectedSerialNumber,
                                   Features = licenseConfiguration.LicenseFeatures
                        }).ToList();

状況によっては、それらを次々に実行し、ほとんどの場合は正常に機能しますが、そうでない場合もあります。2 番目のクエリの結果で、Counterは別の行から取得します。

Visual Studio - クイック ウォッチ ここに画像の説明を入力

SQL 管理スタジオ ここに画像の説明を入力

私はそれがEFキャッシュまたはsmthの問題だと思いますが、それを適切に修正する方法がわかりません.

4

1 に答える 1

0

最初のクエリでは、Activation Id (PK) を LicenseConfigurations ActivationId (FK) に結合しています。

join licenseConfiguration in entities.LicenseConfigurations
on activation.Id equals licenseConfiguration.ActivationId

2番目のクエリでは、クエリ「activatedProduct」の外部で定義された値に参加しているようです

join licenseConfiguration in entities.LicenseConfigurations
on activation.Id equals activatedProduct.ActivationId
于 2013-08-08T17:43:47.203 に答える