2010-11-23 16 views
2

私はあなたの心を選びたいと思っていました...ASP.NET MVCストアドプロシージャを呼び出す

私は小さなレジスタとストアドプロシージャを可能にするこのビューを持っています。

私はこれらの疑似「リポジトリ」を呼び出しています...私には、電話をかけるために穴を開ける必要がある余分な穴のようです。これは、3つのqeustionsをもたらす:

1)擬似リポジトリのポイントは何ですか?

2)ビューコントローラの機能内で、または他の関数を参照して、ストアドプロシージャコールを行うのに最適な場所は何ですか?

3)ストアドプロシージャの結果(つまり失敗の成功)を受け取るにはどうすればよいですか?私は結果を得るにはどうすればよい

long? tmp = 1234; 
LinqToPartyDataContext lq = new LinqToPartyDataContext(); 
lq.spCreatePersonaParty(ref tmp, 
    model.FirstName, 
    null, 
    null, 
    null, 
    null, 
    null, 
    null, 
    null, 
    model.EmailAddress, 
    null, 
    null, 
    null, 
    null, 
    null, 
    model.ZipCode, 
    null, 
    null); 

は、ここに私の呼び出しですか?

+0

私の答え(あなたの編集前)を参照してください。 L2SQLまたはEFを使用していますか?また、すべてのnullパラメータがなぜですか?そこに過負荷を作成する必要があります。あなたのコードを多くのクリーナーにします。 – RPM1984

+0

私は何かを渡さなければならないと思っただけです...いいえ? – dcolumbus

+0

過負荷ですか?それはどのように実装されますか? – dcolumbus

答えて

1

1)疑似リポジトリのポイントは何ですか?

UIから基本的な実装の詳細を隠すこと。例えばは:

IFooRepository repo; 
var foo = repo.FindSingle(1); 

すべてのUIが知っている、それが望んでいるものを取得します何かを呼び出していることです。なぜそれは実際の詳細を気にする必要がありますか?それが気にするのは、望む結果を得ることだけです。

実際の実装は、L2SQLリポジトリ、Entity Framework、または従来のADO.NET実装でも可能です。

2)ビューコントローラ機能内で、または他の機能を参照して、ストアドプロシージャコールを行うのに最適な場所は何ですか?

UIからではありません。

コントローラが呼び出すことができるストアドプロシージャにパラメータを公開するインターフェイスを作成します。

var result = repository.FindSomethingSpecific(param1, param2); 
return View(result); 

3)どのように私は保存されproceduesが発生受け取るん(故障の成功) ?

これは、あなたのパーシスタンス層(EF/L2SQL/classic ADO)によって異なります。

EFを使用している場合は、UIがモデルバインドを使用してアクセスできるPOCOにSPROCの結果を戻すことができます。

L2SQL(POCOサポートなし)を使用している場合は、手動でPOCO(左から右へコピー)に投影し、それにバインドする必要があります。

古典的なADO.NETを使用している場合、手動で結果セットをトラバースして、POCOに投影する必要があります。

+0

私はデータモデル.dbmlを作成し、ストアドプロシージャをドラッグしました。それがレコードを更新するために呼び出すものです。私はこのすべてに慣れていないので、私は必要に応じて各駒を消化しようとしています。私はあなたの助けに感謝します。 – dcolumbus

+0

右のように、LinqをSqlに使用します。あなたのDALであなたのUIにバインドするために、POCO(単純オブジェクト)を返すためにいくつかのステッチを行う必要があることを意味します。 – RPM1984

+0

おそらく、これをすべてクリアすることができます。エンティティフレームワークを使用してSQL Serverに接続する方法は?それで私はこの申請をしたいと思っていますが、私は肉にまっすぐに脂肪のすべてをカットすることはできないようです。 – dcolumbus

関連する問題