3

EF 5.0 Code First を使用しています。読み取りクエリごとに nolock を実装できません。以下のコードを見つけてください。

私のモデル:

public class UserType
{
    public UserType()
    {
        CreationDate = DateTime.Now;
        UpdatedDate = DateTime.Now;
        DeletedFlag = false;
    }
    public int UserTypeId { get; set; }
    public string UserTypeName { get; set; }

    public int CreatedBy { get; set; }
    public int UpdatedBy { get; set; }
    public DateTime CreationDate { get; set; }
    public DateTime UpdatedDate { get; set; }
    public bool DeletedFlag { get; set; }
}

RepositoryBase:( リポジトリ設計パターンを使用しています)

 public IQueryable<T> Query<T>() where T : class
    {
            return DataContext.Set<T>();
    }

サービス:

//TODO: place NOLOCK
repBase.Query<UserType>().Where(ja => ja.DeletedFlag == false).OrderByDescending(ja => ja.UpdatedDate).ToList();

repBase は、Query() の上で呼び出す DB コンテキストのインスタンスです。

ここで、(NOLOCK) を使用して上記のクエリを実行します。

Visual Studio 2012、EF 5.0 コード ファースト、C#.Net 4.0、MVC Web API、リポジトリ デザイン パターン

前もって感謝します。

4

1 に答える 1

4

サポートされていません。EF はクエリで発行されることはなく、またはNOLOCKを介し​​て直接 SQL を実行する以外にそれを行う方法はありません。EF で生成したい場合は、EF ソース コードをダウンロードし、その SQL 生成エンジンを変更してヒントを追加できます。とにかく、グローバルに使用することについてよく考えるべきです。Database.SqlQueryDbSet.SqlQueryNOLOCKNOLOCK

于 2013-02-07T09:14:10.940 に答える