スタックに1つの問題があります。私は一般的なリポジトリを使用し、それを使ってストアドプロシージャを呼び出そうとします。私が知っている唯一の方法は、文字列としてプロシージャ名を渡すプロシージャ名を文字列として渡さずに、リポジトリパターンを使用してストアドプロシージャを呼び出す方法
DataContext.Database.ExecuteSqlCommand(sql, parameters);
それとも
DataContext.Database.SqlQuery<T>(sql, parameters);
を呼び出すことです。しかし、私は既に自分のDBContextにプロシージャを持っています。実際にプロシージャ名を文字列として渡すことを避ける方法はありませんか?
もちろん、私はプロシージャ名を格納するためにenumを使用することができましたが、DBContextにプロシージャがあるとすぐにDbSetにアナログを使用する可能性があると思いました。私はsmthを変更した後、コンパイルエラーを得ることを好むため、不正です。私が単体テストで見つけなければならない "マスクされた"エラーを得るのではなく、モデルの中で。しかし、実際それは私の好みの唯一の質問です。お返事ありがとう! –
Julia
確かにenumを使うことができますが、誰かがスキーマを変更してsprocの名前を変更しても、実行時エラーです。 おそらく根本的な問題は汎用リポジトリですか?私は通常、集約ごとのリポジトリを好んでいます。そうすることで、リポジトリ内の特定のモデルに特化した問題はありません。私は、ジェネリックリポジトリを使用している場合、その中に100万ストアドプロシージャを持つ "godクラス"になる可能性があることがわかりました。 – Brook
私はあなたが正しいと思っています...多分私は私のレポジトリコンセプトを本当に変えるでしょう。 – Julia