我无法理解如何使用 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)提供方法的对象。