0

私はMVCの概念に不慣れで、データをコントローラーロジックから分離しています。Linq to Sqlを使用しています。次に、DbContextの新しいインスタンスを作成し、それを使用してコントローラーからデータベースにクエリを実行します。コード内のさまざまな場所で同じクエリをたくさん実行する必要があります-質問は-Modelフォルダに別のクラスを作成し、そこにdbcontextの新しいインスタンスを作成し、クエリを実行する関数を作成できますか?クラス内のdbで、これらの関数をパブリックにしてから、必要なコントローラーから呼び出しますか?私はそれが2つの部分の質問だと思います、私はこれを行うことができますか、そしてこれはdbに接続するための好ましい方法ですか、それとも異なるコントローラーですべての別々のコードを書くだけですか?

4

2 に答える 2

1

類似/同じクエリを何度も実行する必要がある場合は、LINQクエリをコンパイルすることをお勧めします(リンクはLINQ to Entities用ですが、基本的にLINQ to SQLの場合も同じです)。クエリを繰り返し呼び出すと、パフォーマンスが大幅に向上します。以下のスニペットのようなことを行うことができます。

static readonly Func<DbContext, IQueryable<T>> compiledQuery = CompiledQuery.Compile<DbContext, IQueryable<T>>(/*your query goes here*/);
using (DbContext context = new DbContext())
{
    IQueryable<T> results = compiledQuery.Invoke(context);
}

基本的には、これらのコンパイル済みクエリをDbContextクラスに配置し、usingステートメントを使用して呼び出すことができます。

于 2012-12-04T03:14:46.357 に答える
0

それはまさにあなたがやりたいことです...あなたはリポジトリを作成したいです(おそらく別のプロジェクトで)、この方法ですべてのコントローラのすべてのデータアクセスコードを分離して再利用します...「リポジトリパターン」を検索します...

于 2012-12-04T03:08:42.393 に答える