3

少し変わったスキーマを持つデータベースを使用してアプリを作成しています。少なくとも私は珍しいと思います.DBのことはめったに行いません.

私の本はすべて、DB アクセスに Entity Framework (またはその他の ORM) を使用する必要があると言っていますが、それらの例は常に標準的な CRUD です。エンティティごとに 1 つのテーブル、オブジェクトごとに 1 つの行、アクティブなレコードなど。

私のスキーマはばらばらのサブタイプを使用しているため、エンティティごとに複数のテーブルがあり、改訂履歴があるため、編集によって実際に新しい行が作成されますが、編集されたフィールドによっては 1 つのテーブルにのみ作成されます。

EF はこの種のカスタム動作に対応していますか、それとも従来のパターンに対応していますか? 私の理解では、スキーマまたはドメイン オブジェクトを作成すると、データベース操作コードが自動的に生成されます。デフォルトの動作をオーバーライドできますか? カスタム動作について EF に他にどのように伝えることができますか?

EF が私の人生を楽にしてくれるなら、私は喜んで EF を学びたいと思っていますが、フレームワークの学習に多くの労力を費やしたくありません。このような場合は、自分のリポジトリをロールして、自分で SQL を処理したいと思います。

4

1 に答える 1

3

The question is too abstract to be definitely answered. EF offers some advanced mapping scenarios where more tables can be mapped to single entity but it defines strict rules to achieve that. Alternatively you can map database views or custom SQL queries combining data from your tables to form your entities.

More complicated is your second requirement - it generally requires writing your own SQL / stored procedures and map it to EFs CUD operations performed on tables. This SQL code will contain part of your update rules because EF updates whole entity not only affected record. If you use mapped views or queries you must map these CUD operations to custom SQL or stored procedures because otherwise your entities will be read only.

Conclusion: It can be possible to achieve what you want but it is not simple, it requires advanced knowledge of EF and you will still write some SQL.

于 2012-06-18T09:42:36.940 に答える