私は Entity Framework 4.3.1 を使用しており、最初にコードを作成し、生成されているクエリを SQL プロファイラーで調べています。例を次に示します。
ご覧のとおり、引数をnvarchar(max)次のように指定していますが、私の構成ではMaxLength値を指定しています。したがって、パラメーターは次のように渡されると予想されますnvarchar(n)  。これを行わないため、クエリの実行が遅く、この単純な変更でクエリが高速化されることがわかりました。
Entity Framework に正しいnvarchar長さを生成させる方法を知っている人はいますか?
これが私のエンティティと構成コードです:
実在物
public class StorageTransportOrderItem 
{
    public string StorageTransportOrderItemNumber { get; set; }
    public string StorageNumber { get; set; }
    [...]
}
構成
ToTable("StorageTransportOrderItem");
Property(p => p.StorageTransportOrderNumber)
    .HasMaxLength(10);
Property(d => d.StorageTransportOrderItemNumber)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
    .HasMaxLength(4);
HasKey(d => new
{
    d.StorageTransportOrderItemNumber,
    d.StorageNumber,
    d.StorageTransportOrderNumber
 });
クエリの例
FROM [dbo].[StorageTransportOrder] AS [Extent1]
WHERE ([Extent1].[StorageNumber] = @p__linq__0) AND ([Extent1]
[StorageTransportOrderNumber] = @p__linq__1)
)  AS [Limit1]',N'@p__linq__0 nvarchar(max) ,@p__linq__1 nvarchar(max)  
',@p__linq__0=N'200',@p__linq__1=N'0001374850'
に注意してくださいnvarchar(max)。これが遅い原因です。