我正在构建一个包含3个项目的MVC Web应用程序。一个用于GUI,一个用于BusinessLogic,一个用于数据访问。
对于我的数据访问,我有EF生成的文件,因此我有一个名为“Customer”的生成类。要为这个类创建验证属性,我需要创建MetaDataType(需要在同一个命名空间中完成,因此我必须在DAL层中完成) - 通过这样做我从GUI中引用数据访问层这破坏了将项目拆分的整个想法,因为我的GUI现在引用了我的DAL和BL层。无论如何我可以保持我的GUI和DAL层分离,但仍然可以使用[必需]之类的验证属性等等?
提前致谢。
答案 0 :(得分:2)
这就是ViewModels的含义。但这意味着你将有一套新的DTO用于视图 - 控制器通信......恕我直言,这是一件好事,因为你的观点不应该对真实领域模型有任何了解。
关于让您的观点与模型沟通的所有不同方式,请查看this。
答案 1 :(得分:2)
如果您使用的是.NET 4(EF 2),则可以在可以跨项目共享的单独类库中生成POCO实体。这不需要依赖于DAL。请参阅我之前的回答:
ASP.Net Layered app - Share Entity Data Model amongst layers
特别是3. POCO模板,包括如何转移到单独的项目:http://blogs.msdn.com/adonet/pages/feature-ctp-walkthrough-poco-templates-for-the-entity-framework.aspx