ORM で生成されたオブジェクトの使用方法がわかりません。データベース モデルをオブジェクトにマッピングするために LLBLGen を使用しています。これらのオブジェクトは、私たちのビジネス モデルを表す別のレイヤーにカプセル化します (私が思うに)。
たぶん、このコードはこれをよりよく説明します。
public class Book { // The class as used in our application
private BookEntity book; // LLBLGen entity
private BookType bookType; // BookType is another class that wraps an entity
public Book(int Id) {
book = new BookEntity(Id);
}
public BookType BookType {
get { return this.bookType; }
set {
this.bookType = value;
this.book.BookType = new BookTypeEntity(value.ID);
this.book.Save();
}
}
public int CountPages() { } // Example business method
}
エンティティのフィールドをプロパティのように公開するのは面倒です。マッピングをやり直すからです。リスト型では、「追加」および「削除」メソッドに加えてリストを公開するプロパティを作成する必要があるため、さらに悪化します。
上記の BookType セッターの例では、BookTypeEntity オブジェクトにアクセスする必要があります。BookType オブジェクトの ID を使用して新しいオブジェクトをインスタンス化することで、このオブジェクトを取得できます。これも気持ち悪い。
BookEntity オブジェクトを拡張してそこにビジネス ロジックを追加するべきではないのでしょうか? それともパーシャルを使用しますか?
LLGLGen の例では、エンティティ オブジェクトを直接使用していますが、これは非常に面倒に見えます。上記のコードで、ビジネス ロジック (CountPages など) のメソッドを持つこともできるオブジェクトが必要です。