我正在开发WCF服务,它是较大系统的一部分。该服务将提供一些业务逻辑,并将通过实体框架(使用模型优先)连接到数据库。我发现有许多不同的方式与WCF服务(基本实体,DTO,自我跟踪实体,POCO等)联合实体框架。我的基本要求:WCF服务和实体框架n层应用程序问题
- 的服务是瘦客户机(和其他服务)所建,大部分的逻辑是在其一侧,所以它不是任何CRUD应用程序(WCF数据服务是不适合我)
- 不同的客户需要不同的粒度级别的数据,所以在数据库中的同一实体会有不同的数据合同
由于我的要求我的眼光应该如何构建最接近(我认为这是最接近到DTO方法): http://www.codeproject.com/Articles/127395/Implementing-a-WCF-Service-with-Entity-Framework
但我认为数据访问层应该与服务的逻辑(2个程序集:项目,名称空间,DLL,但作为一个应用程序工作)分开。在这种情况下,我会遇到一些问题:这两层应该分别做什么:应该在服务中完成所有的逻辑,并且将DAL用作CRUD?或者应该服务只负责明确的业务逻辑,而整个数据库逻辑(使用linq的具体查询)将在DAL(通过DAL公开的更多特定方法)中完成?还有什么是重要的哪些对象应该发送这些2层:数据契约,实体或附加模型?
在上述情况下,我的方法可以吗?