我正在開發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層:數據契約,實體或附加模型?
在上述情況下,我的方法可以嗎?