我们有一个使用nHibernate的MVC3项目;有一个单独的模型项目,其中包含存储库和服务层使用的所有模型类。这些模型使用System.ComponentModel.DataAnnotations中的DisplayAttribute和RequiredAttribute等数据注释。
还有一些属性,例如System.Web.Mvc中包含的RemoteAttribute。
这当然意味着模型项目现在依赖于特定的前端技术。
假设解决方案可能有其他前端,那么处理此依赖关系链接的最佳方法是什么?
答案 0 :(得分:1)
RemoteAttribute
不属于模型,因为它指定了一个控制器/动作来验证服务器上的属性,并且模型不应该知道控制器,动作或路由等概念。表示层取决于模型,而不是相反。
我会创建一个继承模型的视图模型,覆盖属性(必须是虚拟的)并添加RemoteAttribute
。通过这种方式,您可以避免重复和映射,尽管这也是一种替代方案。
答案 1 :(得分:1)
为了减少数据库模型和前端技术之间的依赖关系,您可以使用特殊的视图模型来验证控制器中的其他前端操作,并将数据从viewmodel放到数据库实体之后。