我不太明白如何使用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
}
暴露实体的字段(如属性)感觉很奇怪,因为我要重新映射一遍。对于列表类型来说,情况更糟,因为我还需要编写“添加”和“删除”方法以及公开List的属性。
在上面的示例中,在BookType setter中,我需要访问BookTypeEntity对象,我可以使用BookType对象的ID实例化一个新对象来获取此对象。这也不太好。
我想知道是否应该扩展BookEntity对象并在其中添加业务逻辑?或者使用partials?
在LLGLGen示例中,他们直接使用实体对象,但我觉得这看起来很乱。我希望代码中的对象也可以具有我的业务逻辑方法(例如CountPages)。