ASP.NET MVC NHibernate模型绑定

时间:2010-07-14 15:56:44

标签: asp.net-mvc nhibernate domain-driven-design

使用NHibernate我不再在我的域对象上公开外键,因此Product不再具有属性:

public int CategoryId {get;set;}

但是有:

public Category Category {get;set;}

不幸的是,对于ASP.NET MVC中的自动模型绑定,这似乎不能很好地工作 - 如果我想简单地将表单集合绑定到我的域对象。

例如,我不能在视图中选择Category Id值,在我的控制器操作中接受产品对象,并期望MVC将其转换为类别对象。

到目前为止,我的解决方案是创建具有外键值属性的视图模型 - 但是,这通常会导致代码中的一些重复和我的控制器中的额外映射逻辑

有更好的方法吗?

2 个答案:

答案 0 :(得分:7)

建议使用专为您的观点量身定制的精简视图模型;您可以使用AutoMapper简化所需的映射操作。

答案 1 :(得分:4)

另外,请记住,在使用Nhibernate时,您正在处理代理对象,最好不要跨应用程序边界尝试序列化它们,例如模型绑定,Web服务或远程调用。

如果您需要将CustomerID转换为Customer,您将需要创建一个可识别数据存储库的Custom Model Binder,并且可以获取customerID并获取Customer对象。在某些情况下这很有用,但我不建议在这种情况下使用它。