0

皆さん、良い一日を!

現在、データベースを処理するためにLinq to Sqlを使用してasp-mvc 2のプロジェクトに取り組んでいます。

asp mvc で Linq to sql に関する多くのドキュメントを参照しています。私の質問は、データ コンテキストにアクセスする正確な場所ですか? パフォーマンスの良い場所はどこですか?

たとえば、私はMyDBDataContextクラスを持っています

コントローラーで定義できます

public class ImaginaryController : Controller
{
  MyDBDataContext context = new MyDBDataContext ();
  
  public ActionResult Index()
    {
        var list = // some code to read context 
        return View(list);
    }        
  }
  .......

または、アクションメソッドで

 public class ImaginaryController : Controller
 {
  
  
  public ActionResult Index()
    {
        MyDBDataContext context = new MyDBDataContext ();
        var list = /* some code to read context */;
        return View(list);
    }


  public ActionResult Create()
    {
        //but create need reference
        MyDBDataContext context = new MyDBDataContext ();
        var list = /* some code to read context */;
        return View(list);
    }
          
  }

別のオプションは、データにアクセスするためのクラスを作成することです

 public class AccesToBD{
   //maybe
   private MyDBDataContext current;
  
   public static MyDBDataContext GetContext(){
       return current;
   }
 }

または、C# でシングルトン パターンを実装する などのより複雑なもの

最善の解決策は何ですか?なぜ?。回答ありがとうございます。

4

1 に答える 1

1

理想的には、これには Dependency Injection を使用することをお勧めします。基本的な形式では、データベース コンテキストをコントローラー コンストラクターに挿入できます。そうすれば、すべてのコントローラー/アクションなどでコンテキストの新しいインスタンスを作成する必要がなくなります.

これを行う良い例がここにあります:

ASP.NET MVC 4 依存関係の挿入 - ハンズオン ラボ

基本的に、データロジックへの直接アクセスをコントローラー/アクションから分離するのに役立ちます-これは、データストレージの方法などを変更する必要がある場合に非常に重要です.

于 2013-08-23T17:08:32.360 に答える