簡體   English   中英

從數據庫創建用於C#的不同投影的最佳實踐

[英]Best practices to create different projections from database for use with C#

所以,我的問題是我的數據庫中有一堆相互關聯的表。 現在,根據用戶的需求,我需要根據它們創建不同的投影。

可以說我有10張桌子,需要6個不同的投影。 這些投影直接用作我使用的視圖組件的數據源。 基本上,到目前為止,我已經找到了兩種方法來完成此操作。

1)我用設計器創建一個數據集,其中包含我需要的所有不同表。 然后,我使用Linq2DataSet創建投影並將結果傳遞給視圖組件。
2)我創建一個DataSet,其中包含6個自定義TableAdapter,每個投影一個,每個,然后用它們填充數據表並將表交給視圖組件。

對於解決方案1,它顯然更靈活,我可以更輕松地從中創建新的投影。 但是,如果數據量增加,這可能會成為問題。
對於解決方案2,它比較輕,但是很難進行任何更改。 我不希望很快有很多更改,但是靈活性始終很好。

那么,這些解決方案中哪一個會更好,還有其他更好的解決方案嗎?

編輯:添加一些上下文

因此,我想舉一個我正在使用的數據類型的例子。 基本上,我有一個包含結果的表。 結果具有類型,並且可以具有一個或多個關系。 這些定義為例如truckID,routeID或countryID。

現在,根據結果的類型,我需要獲取一個或多個關系。 這些示例可能是卡車平均速度的結果類型,它可能與所有這三個都有關系,這意味着我想加入所有上述表格。 另一個例子可能是卡車交付數量的結果類型,這可能與路線和國家有關。 未使用的關系始終為0或null。

而且,這些情況進一步分為方案。 這意味着我應該能夠更改獲取要顯示的數據的查詢,以僅考慮給定的方案。

所以我的問題是,如何讀取所有這些數據並適當地使用它們。 我想SQL視圖可能是一種選擇。 我對數據庫訪問事物還很陌生,因此可以提供任何幫助。

第一個不合適,因為投影是使用LINQ在客戶端進行的。 可以使用第二個表,但是您仍在填充6個表。 據我從您的帖子中了解到,您只能使用一個,因為只有一個dataview。 但是我的建議是,如果您的客戶向您發送的是預期的投影類型的ID,則可以通過定義6個視圖在數據庫端使用投影,或者可以是動態查詢。 對所需的列使用水平過濾,並通過where子句使用垂直過濾。

我將使用視圖,因為查詢已被外部化到DB,因此與代碼中的嵌入式查詢相比,更易於更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM