2014-02-22 36 views
0

我需要一些關於創建DAL的指導。我試圖找到一些好的資源,但沒有遇到任何特定於我的需求的東西。DAL設計和指導

我有幾個一個一對多的關係,一個稍微複雜的數據庫佈局和一個多到多。大多數文章我看到在線參考實體框架來幫助ORM,但不幸的是我不能使用這個,因爲我不能使用反射/發射

目前,我有一個類正好代表我的數據庫中的每個表。然後我有一個通用的存儲庫,所以我可以操縱這些類。最重要的是,我還有一個手動實現關係的層(服務層??),即,一個客戶可能有多個地址,所以Customer對象將擁有一個地址列表。這是執行計算/操作的層。當對這些關係對象之一進行更改時,服務層將處理轉換爲表對象並通過存儲庫提交更新。

幾個問題:

  1. 什麼將這些層的技術名稱是什麼?
  2. 被稱爲DTO的表交涉,並要求波蘇斯關係的對象?
  3. 應該從關係對象的表對象轉換在知識庫中完成,我稱之爲一個服務層,或步驟之間的嗎?
  4. 最後,我在做什麼是有道理的?

任何鏈接到應用文章大加讚賞。

道歉缺乏代碼。當我在下一臺電腦時將會用示例更新。

編輯:要清楚這是Windows Phone的&的WinRT的本地SQLite數據庫。我正在使用一個簡單的orm將表映射到一個對象,但是,如果沒有發出,我不能有自動生成的複雜對象,因此我必須在簡單的表格表單上創建另一個層來解決這個問題。

問候

回答

0

我有幾個一個一對多的關係,一個稍微複雜的數據庫佈局和一個多到多。

啊,我有一個稍微複雜的菜單來做飯。雞蛋和培根。

曾見過一個稍微複雜的數據庫?比方說200個tabbles,也許600個關係?請。少數一對多和多對多都是 - 但並不複雜。

我所看到的在線參考實體框架,幫助與ORM,但不幸的是我不能用這個,因爲我不能 使用反射/發射

鑑於實體框架的一個稍微過時的版本包含在.NET框架 - 因此安裝在GAC中並繞過安全性 - 爲什麼你覺得它神奇地不能使用反射或發射?

現在的答案:

1:沒有。這不是層。這一切你都是一個ORM。我將他們稱爲數據訪問和對象管理層。

2:當它們是退化的業務對象時,它們僅被稱爲DTO - 沒有邏輯(業務,而不是數據訪問)。否則顯然他們不是數據訪問對象。 NOW poco - 你甚至知道這個詞的含義嗎? Plain Old C#Objects - 即不從基類繼承。

3:取決於。

4:沒有。我們沒有使用反射/發射的論證很弱 - 這是一個溫和的說法。你已經過了頭。我確實保留了一段時間的商業ORM,在我生活中所做的所有事情中,可能是最複雜的軟件。有很多事情會犯錯,而且你太肥胖了,恕我直言,你可以做出這樣的事情,並且可能會做出非常糟糕的情況,並花費一定的時間試圖解決別人解決的問題 - 沒有任何實際收益。動態SQL生成會給你白色的樓梯,或只能處理非常基本的元素。你的時間可能會更好地花費了解爲什麼你不能使用反射或發射字節碼....

文章....嗯。請參考我的參考手冊:Scott Ambler的「建立對象應用程序」 - 我相信你可以在互聯網上找到它,例如在亞馬遜。

+0

Windows手機不支持發射。我使用了一個非常簡單的orm,所以我不必生成SQL。由於沒有發射,我必須手動連線對象關係。 – Peter

+0

有一些ORM的Windows手機。我會避免自己寫「不惜一切代價」,除非它本身就是一個項目。 – TomTom