2011-02-27 183 views
2

我想知道如何設計這個最好的..WCF +實體框架設計

在我的ASP.NET MVC應用程序,我有一個數據庫,我想用一個WCF處理與EF通過該數據庫我的所有交互。所以我在用於與數據庫交互的服務上創建了一個實體模型。爲了從ASP.NET應用程序與WCF進行交互,我爲每個EF模型創建了DTO(我只有3個)和一個Converter類,以便從EF模型轉換爲DTO,反之亦然。

從側面說明..是否有可能避免使用DTO,而只是轉移EF模型? - 我試過了,但沒有運氣,因爲客戶端的asp.net應用程序不識別這些模型。

這是一個合適的設計方法,或者是另一種方法會更好嗎?

在此先感謝。 :)

回答

5

這種架構確實用於業務邏輯和數據訪問邏輯部署在另一臺服務器上,然後部署在asp.net前端的情況。這種體系結構的原因可能是公司政策,安全性,可擴展性等,但通常是針對較大的項目。

你說你有3個「EF模型」。這是否意味着您有3個EDMX文件或3個實體?如果你的意思是3個實體比你的項目可能非常小,除非你真的必須使用這個架構(直接需求),或者除非你正在做一些測試項目,否則沒有理由這麼做。

您如何使用DTO?是否僅僅(或非常接近)1:1映射到EF實體?在這種情況下,你錯過了DTO的目的,你很可能不需要它們。如果你的服務暴露了CRUD操作,你可以直接使用EF實體(但你必須使用POCO或STE)。

此外,如果您只是想將EF模型作爲CRUD服務公開,您應該檢查WCF Data Services

+0

我所擁有的是在WCF服務項目中創建的具有3個實體的單個EDMX。我有DTO的映射1:1的實體,因此我想他們不是必需的,但我該如何去使用實體呢? – Herter 2011-02-27 19:50:06

+0

你正在使用什麼類型的實體?實體對象或POCO?直接發送實體時有什麼問題? – 2011-02-27 19:56:10

+0

我想要做的是:DataLayerServiceClient dls = new DataLayerServiceClient(); 人員P =新PERSON { ID = 1, Fornavn = 「Hans」 的 Efternavn = 「漢森」, 住址= 「vej NR 3」, Postnummer = 「1234」, Telefonnummer = 「12345678」 , Email =「[email protected]」 }; dls.GetCreatePerson(p);'但'PERSON'類型在客戶端上不可用。 – Herter 2011-02-27 20:05:10