6

我有一個使用三層體系結構的ASP.net(C#)項目。我開始在我的DAL中使用實體框架,問題是實體框架生成的類可以在業務邏輯層中使用到什麼程度?在業務邏輯層中使用實體框架生成的類

這是一個好主意,直​​接使用它們,或者我應該創建自己的業務對象,並從實體框架(db-> O/RM-> BOs)映射到他們?

回答

5

在我看來,EF對象將映射到你的。這具有較高的開發成本,但卻帶來了持久性無知和解耦的額外好處。如果業務需要切換到不同的持久性解決方案,這種解耦可以轉化爲長期的重要敏捷性和真實世界的節約。如果沒有解耦,EF對象可以深入嵌入到BLL甚至表示層中,這需要進行大量的重構。在這種情況下,企業可能甚至不考慮切換持久性解決方案,這可能會導致企業競爭力下降。

決定以較高的開發成本獲得此收益取決於企業願意承擔的風險的大小。我建議你與項目專員進行協商,並以最佳判斷力以技術方式解釋他們的戰略目標。

+2

EF生成的類被設計爲可擴展並用作業務對象。如果你不喜歡它,你應該改變orm或僅僅等待EF4的代碼。添加額外的對象只是感覺不對。首先是數據庫,然後是ORM類,然後是BO,然後查看模型。似乎很多。 – LukLed 2009-11-25 23:21:03

2

將生成的類用作Business Objects應該足夠合理。生成的類是不完整的,所以你可以很容易地擴展它們。有時候我覺得使用接口是一個更好的選擇。

1

我剛剛開始使用EF 2.0(在.Net 4.0 beta 2中),它有使用POCO clases作爲EF實體的功能。即您現在可以在EF 2中使用持久性無知類。
我認爲這還沒有完全準備好,因爲我無法按照來自PDC 2009的演示文稿在Visual Studio 2010測試版2中工作,但請注意這一點ADO.Net team blog