2011-03-14 64 views
1

這是您的想法類型問題的一分錢。LazyLoad和ConnectionString

我們從頭開始編寫我們所有的類。對於我們的業務實例,connectionstring是構造函數的一部分。這很簡單,因爲它通常是唯一的構造函數參數。當我們從數據庫加載記錄並將其存儲在實體對象中時......我們應該如何記住連接字​​符串?這是爲了延遲加載的目的。因爲我們可能更多地談論同一個基礎數據庫類型的一個數據庫實例。我們需要知道我們從哪裏獲得記錄,並知道從哪裏延遲相關對象。

我知道這聽起來像一個簡單的問題。我們正在努力避免編碼。

我們是否將每個構造函數中的連接字符串設置爲字符串以嘗試強制設置它?我們是否存儲對加載實體的業務對象的引用?同時,也認爲在某些情況下從xml反序列化時我們需要有一個空構造函數。

沒有經歷過這個,但有工廠的想法。獲得一個新的實體對象必須通過一個連接字符串必須被證明的工廠。

這不是一個明確的API,只是團隊實施和採用的一些東西。

一些鏈接/代碼示例也會很棒。謝謝

回答

1

這個實體框架?你在使用POCO嗎?你能利用EF內置的延遲加載功能嗎?

對於什麼是值得我們還可以知道數據庫它連接到與上下文:

EntityConnection connection = myContext.Connection as EntityConnection; 

if (connection != null) 
    string db = connection.StoreConnection.Database; 

也就是說可能不是有益的,但。

+0

謝謝,我們從頭開始編寫我們所有的實體。沒有使用框架。 – 2011-03-14 23:04:09

+0

啊,在這種情況下,也許看看其他ORM如何做? EF具有延遲加載功能,因此它們生成的實體代理知道它們連接到哪個DB。也許看看他們是如何做到的(或者任何其他ORM做的)都可以提供線索。 – 2011-03-14 23:08:36

+0

感謝您試圖引導我們走向正確的方向。我們決定在所有構造函數中包含連接字符串,並在XmlIgnore中將其作爲基類的屬性。另外,在反序列化時設置CS。它現在看起來很亂,但是會隨着我們的去重構。 – 2011-03-15 22:33:40