ASP.NET MVCとC#を使用して複数のデータベースレイヤーをサポートできるリポジトリのスケルトンデザインはどのようになりますか?LINQtoSQLとNHibernateの両方をサポートした場合のデザインがどのようになるかを確認したいと思います。データベースオブジェクトを作成し、BLLレイヤーでそのオブジェクトのメソッドを呼び出すにはどうすればよいですか?
1 に答える
8
リポジトリ パターンは、おそらくこれに対する最適なソリューションです。各リポジトリのインターフェイスを定義してから、Linq2Sql および NHibernate 実装用の具体的なリポジトリを作成します。
public interface ICustomerRepository
{
Customer GetCustomer(int id);
}
public class NhibCustomerRepository : ICustomerRepository
{
public Customer GetCustomer(int id)
{
// NHibernate implementation
}
}
public class LtsCustomerRepository : ICustomerRepository
{
public Customer GetCustomer(int id)
{
// Linq2Sql implementation
}
}
Ninjectなどの依存性注入フレームワークにより、実装を動的に切り替えることが容易になります。同じ作業単位に参加するように、現在の ISession をリポジトリに渡すために、NHibernate で追加の依存性注入を行う必要がある場合があります。
于 2009-07-03T13:49:12.627 に答える