私はMVC3を使って新しいプロジェクトを開始しました。私はNuGetからEF4.1、Automapper、Ninject、PagedListを実装しました。新しいベンダーへの変換中に、1つのアプリケーションを2つのデータベースバックエンドに効果的にマッピングするにはどうすればよいですか?
IOCとインターフェイスを設定して、2日間パターンを洗い出しました。私は私のサービスを自分のコントローラに、私のサービスをリポジトリに、私のDbContextを私のリポジトリに注入しています。
私が残しているのは、動作するアプリケーションであり、すべてが良好です。私が抱えている問題は、代理店のメインシステムのベンダーを変更する過程にあるということです。これは、データベース構造が大きく変化することを意味します。
ICamaContextの2つの具体的な実装とICamaRepositoryの2つの具体的な実装を作成するのは正しいですか?データベースごとに1つ?各リポジトリで、ICamaRepositoryで定義された契約に一致するように、対応するdbsetsを自分のタイプにマップしますか?
これは意味があるかわかりません。つまり、どのDBバックエンドが使用されているかにかかわらず、私のサービスで何かを書き直したくないのです。
namespace search.Common.Repositories
{
public interface ICamaRepository
{
IQueryable<Parcel> GetParcels();
}
public class AssessProCamaRepository : ICamaRepository
{
ICamaContext _db;
public AssessProCamaRepository(ICamaContext dataContext)
{
_db = dataContext;
}
public IQueryable<Parcel> GetParcels()
{
return from c in _db.DataProperty
select new Parcel
{
AccountNumber = c.AccountNumber
};
}
}
}
リポジトリでdbContextを抽象化する際のポイントは何ですか? – sos00
私は確信していません、私はちょうどオンライン記事に従っていました。私は実際にサービスにコンテキストを直接注入するようにコードを修正しました。 –