2016-04-05 6 views
0

MVC4とEntityFrameworkでVS2012を使用しています。MVCエンティティフレームワークのストアプロシージャに複数のパラメータを追加するにはどうすればよいですか?

ストアプロシージャに複数のパラメータを適切に追加する方法については、の提案が必要です。私は以下のコードを使用していますが、誰かがより良い方法を分かっていれば、コードを書くのは良い方法ではないと思います。

私のストアプロシージャのパラメータが10以上の場合、それは良く見えません。

マイActionMethod

public ActionResult SaveVoucher(Voucher items) 
    { 

     List<MVC_GetMaxCouponMasterByDept_Result> LastCouponId = db.MVC_GetMaxCouponMasterByDept(
      items.vDeptCode, 
      items.vComp, 
      items.vFinYear, 
      items.vLoc, 
      items.CostCenter 
      ).ToList<MVC_GetMaxCouponMasterByDept_Result>(); 

     return View(); 
    } 
+0

それは良い方法ですが、定数を使用 – Marusyk

+0

ここにそのちょうど例の..yesを、文字列リテラルを使用しないようにしよう、私は定数を使用します..しかし、ここで私がでストアプロシージャにprarametersを追加する方法を知りたいですより良い方法 –

+0

なぜこれは良い方法ではないと思いますか? – Marusyk

答えて

-1

SPコードは、あなたActionMethodに直接ではないのparamsに取ると、ヘルパークラス、このようにその再利用可能にする必要があります可能性があります。

PSこれは完全ではありません、私はあなたのためにすべてを書くつもりはありませんが、これはあなたを助けるはずです。

この質問の性質として、スコープはますます大きくなっていきます。つまり、これをリファクタリングする方法は100万種類あります。そのため、デザインパターンについての詳細を読んでください。あなたのクエスト。

public ActionResult SaveVoucher(Voucher items) 
{ 
    SpHelper spHelper = new SpHelper(); 
    var data = spHelper.GetMaxCouponMasterByDept(item.vDeptCode); 
    return View(data); 
} 


//this is in its own class file.. 
public class SpHelper 
{ 
    private DbContext db = new DbContext() 
    public List<MVC_GetMaxCouponMasterByDept_Result> GetMaxCouponMasterByDept(string vDeptCode) 
    { 
     var data = db.MVC_GetMaxCouponMasterByDept(
        vDeptCode,"CCL", "2015-2016", 
        "Mumbai","10001554" 
       ).ToList(); 
      return data; 
    } 

    //... other helpful Sp you have created 
} 
+0

@MegaTronええ、しかし私は依存性注入のアプローチを行っていましたが、これは範囲外です...私は更新しました...彼はデザインパターンを調べることを提案します – Seabizkit

+0

@MegaTronどのように?それは良くないですか?そのコメントを説明してください。あなたがソリッドな原則を理解するならば、その100万のようにもっと良い...私は速く動いていきたくありませんでした!そうでなければ、私は彼のためにクラス全体を書く必要がありました。あなたの答えがどこにあるのか興味があります。 – Seabizkit

+0

静的インスタンスを使用した@MegaTronでは、コンテキストのライフサイクルについて説明してください。 – Seabizkit