0

1つのWebアプリケーションで私はこれを使用しています:-

    using (MvcApplication1.Models.PlumSoftwareEntities db = new Models.PlumSoftwareEntities())
    {
       var results = (from p in db.Work_Details
                where p.CompanyID == 2
                select new { p.ID, p.Dated, p.Employee1.Abbrev, p.Activity.ActivityCode }).ToList();
    }

そして、それはこのSQLを生成します:-

    SELECT 
    [Extent1].[ID] AS [ID], 
    [Extent1].[Dated] AS [Dated], 
    [Extent2].[Abbrev] AS [Abbrev], 
    [Extent3].[ActivityCode] AS [ActivityCode]
    FROM   [dbo].[Work Details] AS [Extent1]
    INNER JOIN [dbo].[Employees] AS [Extent2] ON [Extent1].[Employee] = [Extent2].[ID]
    INNER JOIN [dbo].[Activity] AS [Extent3] ON [Extent1].[ActivityCodeID] = [Extent3].ActivityCodeID]
    WHERE 2 = [Extent1].[CompanyID]

別のWebアプリケーションでは、次のSQLを生成することを除いて、上記とまったく同じlinqを使用します:-

    SELECT 
    [Extent1].[ID] AS [ID], 
    [Extent1].[Dated] AS [Dated], 
    [Extent2].[Abbrev] AS [Abbrev], 
    [Extent3].[ActivityCode] AS [ActivityCode]
    FROM   [dbo].[Work Details] AS [Extent1]
    INNER JOIN [dbo].[Employees] AS [Extent2] ON [Extent1].[Employee] = [Extent2].[ID]
    LEFT OUTER JOIN [dbo].[Activity] AS [Extent3] ON [Extent1].[ActivityCodeID] = [Extent3].ActivityCodeID]
    WHERE 2 = [Extent1].[CompanyID]

最後のナビゲーション プロパティが LEFT OUTER JOIN になりました

この動作にはどのような設定、説明がありますか。

接続文字列は同じで、同じ SQL サーバーに対して、同じログインで、両方のアプリケーションで同じ Entity Framework 5 を使用し、どちらも ASP.NET 4.5 を実行しています。

これは単純な例であり、左外部結合について私にとって重要な理由は、SQlDependency を使用してこれらのクエリをキャッシュするナビゲーション プロパティを使用してエンティティ テーブルを DTO オブジェクトに投影しているためです。SQLDependency では、すべてのビューで INNER JOINS を使用する必要があります。そうしないと、エラーがスローされます。

4

2 に答える 2

0

2013 年 5 月にリリースされた .NET4.5 用のMicrosoft 更新プログラム KB2805227 ( http://support.microsoft.com/kb/2805227 ) により、この問題が発生しました。アンインストールすると問題が解決しました。

于 2013-05-16T09:30:44.787 に答える