私はいくつかのデータソースからビジネス情報を提供するWCFプロジェクトに取り組んでいます。データソースは、それが動作しますが、SQL Serverデータベースである場合にはLINQ式または仕様パターンを使用してIngresデータベースにアクセスしますか?
repo.Find(b => b.Name.Contains("abc"));
:
public interface IRepository<T> {
IQueryable<T> Find(Expression<Func<T, bool>> criteria);
}
、サービスとしてのリポジトリを介してデータソースを照会:コードを再利用するには、私のBusinessContactServiceはとして定義されている一般的なリポジトリの依存性が含まれていますEntity Frameworkを介してしかし、Ingresデータベースでサービスを実行すると、.NETデータプロバイダまたはODBCドライバがLINQ式で動作しないため、問題が発生します。以下、私が見つけたいくつかの回避策があります:EF用
- Virtuoso data provider:それは無料ではありませんし、システムチームはとにかくそれをインストールするように感じていないので、私はそれを使用することはできません。
- Ingres EFプロバイダをEntity Framework sample providerとしてカスタマイズします。非常に興味深いですが、私はタイムラインを作るのを恐れています(来週までに)
- 仕様パターンを使用して私のサービスでLINQ式の使用を非表示にしています。したがって、SQL Serverの仕様実装ではLINQを使用し、Ingresの場合はado.netを使用します。
- NHibernate.Linq。私はNHibernateで少し知っているが、someone here said it works fine with ODBCと私はIngresとLINQの表現を橋渡しすることができるかもしれないと思う。
オプション2〜4についてご提案ください。多くのありがとうございます!
ありがとう、Matteo。私はクエリ()メソッドが好きです。クラスの代わりにジェネリックメソッド、そうではありませんか?そして私はNHibernateを試みます。 –
tang
はい。リポジトリインタフェースは汎用的ではありません。 1つのクラスに実装してから、クエリを使用すると、すべてのタイプにアクセスできます。 –