レガシ アプリによって指定された既存のデータベース スキーマにコーディングしています。多くのテーブルには多数の列があります。テーブル分割パターンをうまく使用できたので、たとえば次のようになりました。
public class Product {
public int ProductId {get; set;}
// Primary fields from Products table
public ProductExtra ExtraDetails {get; set;}
}
public class ProductExtra {
public int ProductId {get; set;}
// Secondary fields from Products table
}
Products テーブルには、監査と同時実行の両方に使用される LastUpdated タイムスタンプ フィールドがあります。データベース管理ではありません。コードで設定する必要があります。Product または ProductExtra のいずれかを更新すると、これが更新されること、および同じトランザクションで両方のオブジェクトのフィールドを更新する場合に、同時実行の問題が発生しないことを確認する必要があります。コードを最初に使用すると、同じ列にマッピングされている両方のオブジェクトに LastUpdated プロパティを設定できません。
ProductExtra から Product への参照を追加してから、ProductExtra への変更を保存したときに、Product で LastUpdated を更新しようとしました。これは問題なくマップされましたが、解決できない循環依存関係があるというデータ更新エラーが発生しました。