2010-06-15 158 views
3

我很想理解實體框架和POCO對象。這是我想要實現的。實體框架POCO對象

1)通過讓業務層使用我的DAL接口,將DAL與業務層分開。也許使用Unity來創建我的上下文。

2)在我的DAL中使用實體框架。

我有一個域模型與駐留在我的業務層中的對象。我也有一個充滿表格的數據庫,它並不真正代表我的領域模型。我通過使用ADO.NET POCO Generator擴展來設置實體框架並生成POCO對象。這給了我一個數據庫中每個表的對象。現在我想能夠說context.GetAll<User>();並讓它返回我的用戶對象列表。用戶對象位於我的業務層。那可能嗎?

這是有道理的,還是我完全關閉,應該重新開始?我猜我需要使用存儲庫模式來實現這一點,但我不確定。

任何人都可以幫忙嗎?

+0

檢查我的回答(在末尾的鏈接),看它是否與DAL/BLL方面的幫助。您的上下文應具有可用於延遲加載它們的複數形式的用戶(例如用戶)。 http://stackoverflow.com/questions/2850371/asp-net-layered-app-share-entity-data-model-amongst-layers/2850402#2850402 – 2010-06-15 16:59:27

+0

我看了你的文章,我想我開始明白了。 ..由EF創建的POCO對象意味着被傳遞?我不明白的部分是,如果我在業務層中使用域模型模式,我如何在數據庫中表示表時使用POCO對象? – 2010-06-16 15:23:59

回答

4
0

一般來說,EF,順便讓所有的物體在你的情況下爲List<T>會是這樣的:

context.Users.ToList(); 

但由於Users將是您的上下文一個IEnumerable無論如何,你可以做幾乎任何類型的迭代或直接在context.Users

+0

好吧,但我如何讓我的EF ObjectContext知道我的用戶域對象,然後讓它從我從數據庫表創建的POCO填充我的用戶對象?它已經創建了名爲TBL_USER的POCO,但我不想使用該對象,我希望能夠在我的業務層中使用我的User對象。 – 2010-06-15 18:42:24

+0

@丹,可能有框架爲你做這件事,但如果是這樣,我不熟悉任何。基於此,我將在我的用戶類型上創建一個方法,該方法需要TBL_USER對象並轉換爲BL類型。用你創建的對象填充一個列表。 但是我不確定這是最好的答案。如果您已經從數據庫轉移到實體POCO對象,則可能需要查看您的問題空間以確保您確實需要額外的業務對象... – AllenG 2010-06-15 19:07:05

+0

我不確定我需要我的額外業務對象。但我仍然有EF創建POCO對象的問題,它們反映了我的數據庫中的表,我希望我的業務對象能夠反映我的域模型。明白我的意思了嗎?也許我需要仔細觀察並確切瞭解POCO的創建方式,看看它們是否可行。 – 2010-06-16 15:28:26