データアクセスクラスには何が入っていますか?ソースコードやクラス図は問題ありません。 メンバーは静的ですか? そこにはどのヘルパー機能がありますか?データアクセスクラスの外観は?
私はcomlete DAクラスを求めていません。私はそれを構築することができます。ちょうどいくつかのアドバイス/フィードバックを探しています。
データアクセスクラスには何が入っていますか?ソースコードやクラス図は問題ありません。 メンバーは静的ですか? そこにはどのヘルパー機能がありますか?データアクセスクラスの外観は?
私はcomlete DAクラスを求めていません。私はそれを構築することができます。ちょうどいくつかのアドバイス/フィードバックを探しています。
データアクセスレイヤーとしてEntity Frameworkを使用しています。
以前は、エンタープライズライブラリのデータアプリケーションブロックと受け入れられた、または返されたデータ転送オブジェクトを使用してデータベースにアクセスするクラスを持つリポジトリパターンを使用しました。
場合によっては、EFを使用して90%の節約を達成しました。
私に電話してください、しかし私は決してORMツールキットを使用しません。その理由は私がコントロールフリークであり、すべてのデータアクセスを手作業で記述することで、遅延ロード機能の微調整など、自分のニーズに合わせていつでも変更できるようになります。
DAクラスでは基本的には、DAクラスには次のような関数が含まれています。
void Save(DomainObject obj)
DomainObject Get(int id)
IEnumerable<DomainObject> Find(SomeQuery)
データアクセスクラスに出入りするものは、ドメインオブジェクトです。したがって、DAはドメインオブジェクトをデータベース表現にマッピングする責任があります。私が現在取り組んでいるプロジェクトでは、クライアントアプリケーションはラムダ式をクエリとして渡すことができます。だから私はこのようなものを書くことができます
IEnumerable<User> users = userDataAccess.Find(usr => usr.FirstName.StartsWith("Pete"));
私は決して静的にしません。その代わりに、私はインターフェイスで機能を定義し、呼び出しコードがインターフェイスを参照できるようにします。これにより、Inversion of ControlとDependency Injectionを使用することができます。テスト可能なアプリケーションを持つための2つの重要な概念。
ほとんどのプロジェクトでは、自分のデータレイヤの書き込みを正当化できません。既存のソリューションを使用することを強くお勧めします。答えるのは申し訳ありませんが答えはありません。
私は自家製DATAACCESS層を使用し、それは次のようになります。
public class HoneyOpposumDAO : DataAccessObject<lots of generics>
{
public ICollection<HoneyOpposum> Select(Filter filter);
public ICollection<HoneyOpposum> Select();
public HoneyOpposum FindByApplicationId(int id);
internal HoneyOpposum FindByDatabaseId(int id);
void Register(HoneyOpposum o);
void Commit(HoneyOpposum o);
void CancelEdit(HoneyOpposum o);
void Save();
void Save(Filter filter);
void Save(DbTransaction transaction, Filter filter);
void Revert();
void Revert(Filter filter);
void Revert(DbTransaction transaction, Filter filter);
}
Filters
はフィルタ式DataSets
でを表現するための複合構造体です。
ビジネスオブジェクトがRegister
を使用して自分自身を登録する必要が
基本的に、これは3層DATAACCESS層があります。これらのオブジェクトへの変更はCommit
を使用してモデルに確認され、CancelEdit
を使用して元に戻すことができます。 を使用し、最後のSave
の変更はすべてRevert
を使用して元に戻すことができるため、委託されたビジネスオブジェクトは、Save
を使用して基本的な保存構造(SQL Server)に保存できます。
このDataAccessレイヤーは、保存されたと保存されていないビジネスオブジェクトを確実に制御します。また、別個のデータベースとアプリケーションIDを使用することもできます。
残念ながら、基本的なコードは非常に複雑で...著作権:
+1私はGoogleハニーOpposumを作るため。 –
これはウィキです。 – Sampson
[プロバイダーモデル](http://msdn.microsoft.com/en-us/library/ms972319.aspx)が好きです。 –