しばらく前に書いていたのですが、最近レビューしに来て、デザインが良くないと思います。
設計は、Entity Framework 4を使用する一種のモジュラーデータベースレイヤー用です。指定された場所にある外部ライブラリからエンティティフレームワークコンテキストを(レイジーに)読み込む単一のデータベースオブジェクトがあり、読み込まれたコンテキストのインスタンスは、ハッシュテーブルに格納されます。それらの名前(EG "ContentMgmtContext")。
このシステムのデータベースとの接触はすべて、ストアドプロシージャを介して行われます。データベースを呼び出すために、クエリメソッドシグネチャは次のようになります。
List<TReturn> Query<TReturn>(string Context,
string Procedure,
TransactionScope Scope,
List<ObjectParameter> QueryParameters)
このモジュール性は私が好きなものです。ただし、このアプローチには重大な欠点が1つwhen using the database layer, the code using it has to have a reference to the library in which the context is stored, in order to access the types returned by the stored procedures through Entity Framework.あります。モデルでは、データベースレイヤーのオブジェクトが、ビューとコントローラーが使用する新しいオブジェクトに変換されます。
これは悪いデザインだと思いますが、どうすれば改善できますか?IStoredProecedureObjectストアドプロシージャによって返されるすべてのデータ型に共通の基本型を与えるなど、空のインターフェイスを追加することを検討しましたが、これはEntity Frameworkによって無効にされているようです。.edmxファイルが再コンパイルされるたびに、コードが新しく生成され、追加が削除されます。これを防ぐ方法はありますか?
このデザインを改善するにはどうすればよいですか?何が(それ以外の)それが間違っていますか?または私は正しい軌道に乗っていますか?