【发布时间】:2011-12-03 23:40:49
【问题描述】:
我正在寻找捷径。我有一些具有多对多关系的 NH 实体。像这样的:
public class Customer : EntityBase<Customer>
{
public virtual IList<Category> Categories { get; set; }
}
public class Category : EntityBase<Category>
{
public virtual IList<Customer> Customers { get; set; }
}
请记住,这是一个非常简单的描述,所以不要建议我不要使用多对多安排,或者我应该使用值类型或类似的东西。
在 DB 端,这种关系是通过一个包含两列的单独表完成的 - Customer_Id 和 Category_Id。
我真的希望能够将现有的Category 添加到Customer,而无需从数据库中检索完整的实体。也许是这样的:
customerEntity.Categories.Add(new Category { Id = 2 });
这样做的原因是该应用程序是一个 ASP.NET MVC 应用程序,并且我正在使用 ViewModels 作为我的视图。这些Customer ViewModels 最终以List<int> 用于类别选择,当我将该ViewModel 映射到相应的Customer 实体时,我希望能够将这些类别ID 吸进@987654330 @list 而不必先访问数据库来检索它们。
我希望能够做到这一点的部分原因是我想尽量减少数据库调用,但我也想让我的映射器类能够创建Customer 实体而无需进行调用到我的服务层去询问其他对象……这似乎是糟糕的设计。我还想避免必须添加另一个层来调用映射器,然后执行从存储库中提取实体的其他映射内容(它本身是通过域服务层访问的)。
我查看了idbag,但其中一个我使用的是 Fluent NHibernate,但它不支持该构造,另外两个我可以从文档中收集到,这将给我一个关于实体的 List<int> ,并且我仍然希望能够访问这些集合中的完整实体。
我对 NHibernate 的要求是否过高?
【问题讨论】:
标签: nhibernate fluent-nhibernate