質問: 私は現在、WebアプリケーションでDDDアプローチを使用して懸念を分離しようとしています。 ユニットテストを実装できるようにするため、UI、サービスレイヤ、リポジトリレイヤを疎結合することが重要な要素です。 リポジトリ層にEntity Frameworkを使用することにしたので、ドメインのコンテキストとエンティティを分割することができます。 現在、WebアプリケーションでLinq-to-SQLを使用しています。 同じWebアプリケーションにEFとL2Sを入れる前に、私が検討しなければならない重大な欠点や赤旗はありますか?それとも一般的にこのアプローチを取る前に? その目的は、今後EFを使用し、コードを触れながらコードをゆっくりと移行させ、物事を正しいドメインのコンテキストに分割することです。
回答: 1つのプロジェクトで両方のORMを問題なく使用できます。しかし、それを簡単にすることができるいくつかのことがあります。 * 1つの接続文字列を使用します。デフォルトでは、Linq-to- `LinqToSql.Properties.Settings.MyDataContextConnectionString`はアプリケーションの設定ファイルに`LinqToSql.Properties.Settings.MyDataContextConnectionString`ような非常に長い名前の接続文字列エントリを作成します。私はこの接続文字列を削除し、EFのためにそれを使用します。接続文字列パラメータを受け取るコンストラクタを使用して、DataContextインスタンスを作成する必要があります。 ``` var connString = ConfigurationManager.ConnectionStrings["MyDbContext"].ConnectionString; using (var db = new MyDataContext(connString)) { ... } ``` もちろんこれをコンテキストファクトリにラップする方が簡単です。 * 明確な名前空間を使用してください。特に移行シナリオでは、Linq-to-SqlとEFは(一時的に)同じクラス名を使用することができます(生成されるか、コードワークで作業する場合は自分で作成します)。インテリセンスで適切なクラスを簡単に認識できれば非常に便利です。 * また、Linq-to-SQLとEFコードを別々のプロジェクトに保存することを検討することもできます。