0

この問題についてアドバイスをお願いします。ADO.NETデータ アクセスにクラシックを使用するソリューションがあります (4 年以上前のものです)。データ アクセス アーキテクチャは、CRUD 操作の既定の実装を持つ、たとえば (名前は実際には問題ではありません).NET 2.0. から継承される単純なクラスです。FooDataBaseObject私たちのプロパティはカスタム属性でマークされています(テーブル内のそれぞれの列の名前など、必要なデータを保持しています)。また、データクラスと同じです(カスタム属性は、テーブル名などを指定するために使用されます)。


エンティティ間の関係は、特別な .xsd および .xml ファイルで指定されます。テーブル自体に外部キーやその他の典型的な制約が含まれることはめったにありません (実際にこのテーブルを継承していますが、顧客はまだインポート エンジンとエクスポート エンジンを使用しているため、変更を禁止しています)。しかし、データベースをリファクタリングするよう人々を説得できると確信しています。


問題は既存のサービスにあります。古い ado.net サービスを使用する可能性がある EF を導入する方法はありますか? 私は現在、エンティティを生成したり、特定のクラスを継承したりする必要がないため、EFコードファーストDbContextアプローチを使用するというアイデアを検討しています.既存のデータベース。また、古いデータ クラスのミラーリングクラスを作成する方法もおそらくあるでしょう。Customer->と言うCustomerEntityCustomerEntityandのすべての必要なプロパティを反映し、andCustomerで使用されるため、新しいサービスで使用し、古いサービスのみで使用できます。DbContextDbSetCustomerEntityCustomer

このアプローチの潜在的なボトルネックと、これの可能性 (これは実際に本当ですか?) または他のアドバイスなどについて聞きたいです。ありがとう!

4

1 に答える 1

1

テーブルに外部キーの関係がない場合、EFの使用で多くの問題が発生します。EFは通常、コード内に関係を作成するためにこれらの関係に依存します。

もちろん、それらを個別のテーブル->個別のオブジェクトとして扱い、すべてのキーを手動で処理することもできます。

古いコードは独自のヘルパーメソッドとデータのコミットまたはロールバックの方法に依存しているように見えるため、変更せずにクラスを古いコードにマップできる可能性はほとんどありません。既存のオブジェクトモデルについて何も知らなければ、言うのは難しいです。

私が行うことは、EFモデルを作成し、アプリをアップグレードするときにそれを1つずつ使用し始めることです。既存のコードが物事を分離して処理し、コード全体に多くの依存関係がない限り。

于 2012-09-22T19:34:08.613 に答える