2011-02-11 40 views
0

我是新來的Silverlight,但被傾倒權加入戰局 - 學習我想好辦法:O)Silverlight LINQtoSQL:一個大的數據類,還是幾個小的數據類?

無論如何,我工作的web應用程序具有代表不同對象相對複雜的數據庫結構鏈接到對方,我想知道兩兩件事:

1 - 什麼是推薦的方法,當涉及到數據類?只有一個大的數據類,或者試着將它分成幾個較小的數據類,記住它們需要相互引用?如果推薦的方法是有幾個數據類,那麼如何定義數據類間的引用?

我這麼問是因爲我做了一個小測試。在我的數據庫(在這裏簡化,實際模型更復雜,但並不重要),我有一個表「訂單」和一個表「參數」。 「訂單」在「參數」上有一個外鍵。我所做的是創建2個數據類。 第一個,ParamClass,是我只有放棄了「參數」表,這樣我就可以有一個很好的「參數」類。然後我創建了一個簡單的服務來添加基本的SELECT和INSERT功能。
第二個,OrdersClass,其中,I下降兩個表,使得表之間的關係將自動創建「命令」類中的「的EntityRef <參數>」變量。然後我刪除了在OrdersClass數據類中自動創建的「parameters」類,因爲該類已經在ParamClass數據類中聲明瞭。我再次創建了一個小服務來測試它。

到目前爲止好,它高興地建立。問題是,當我嘗試處理應用程序代碼的東西,我添加服務引用了兩個數據類,但它是不開心做這樣的事情:

OrdersServiceReference.order myOrder = new OrdersServiceReference.order(); 
myOrder.parameter = new ParamServiceReference.parameter(); //<-PROBLEM IS HERE 

它comlpains它不能隱式地從類型轉換「MytestDC .ParamServiceReference.parameter'到'MytestDC.OrdersServiceReference.parameter'

難道我不知何故需要聲明來自OrdersClass的ParamClass的某種引用,或者如何「轉換」到另一個? 這是甚至建議和有效的方式嗎? 由於這是一個團隊項目,我最初想分離數據類,以便他們(和他們的服務)可以很容易地由一個成員簽出而不需要檢查整個整個數據類。

任何幫助表示讚賞!

PS:使用Silverlight 4,如果基於廣泛接受的單責任原則(SRP)這是很重要

回答

0

好的,一些更多的研究讓我這樣做:使用L將關係模型與類分開並不簡單INQtoSQL。我最終轉而採用了一種實體框架方法,它本身並沒有優雅地處理它(例如見herethere),但至少它解決了我使用LINQtoSQL的另一個主要問題。 還有其他的ORM在這方面顯然更有能力(NHibernate經常在推薦中出現),不幸的是,我現在沒有時間去調查它們,處於如此緊迫的最後期限之下。

對於參考,這是很簡單的,行更改爲:

myOrder.parameter = new OrderServiceReference.parameter(); 

即使我刪除了從數據類的聲明。

希望這可以幫助別人!

1

,一類應始終負責一個任務,一個任務只

這幾乎無效的「一個大數據類」的做法。

我總是建議更小,更易於管理的位可以組合,而不是一個humonguous類,做一切(除了衝咖啡給你)。

的SRP

資源:

+0

這絕對是我的首選,在我所做的所有項目中,我一直都遵循這種方法。你能指出我在哪裏可以找到有關如何鏈接數據類的詳細信息? – Bourgui 2011-02-12 14:40:45

相關問題