2016-09-27 65 views
0

在設計C# - > SQL數據訪問層時,我遇到了一個看似簡單的問題。SQL - 概述查詢

下面是什麼,我試圖做的僞代碼:

User.GetOverview() 

用戶概況由之類的東西

public class UserOverviewModel() 
{ 
    public string Username { get; set; } 
    public SavedSearchModel[] SavedSearches { get; set; } 
    public TrackingItemModel[] ItemsToTrack { get; set; } 
} 

所以無論是SaveSearchModelTrackingItemModel是完全不同的數據庫表,並與用戶有一個 - >多重關係。

我的問題是,你如何從SQL查詢中獲得所有這些信息?在一天結束的時候,我試圖從REST API返回是這樣的:

{ 
    "Username": "wakawaka54", 
    "SavedSearches": [ 
     { "SearchText" : "40mm" } 
     { "SearchText" : "50mm 12v" } 
    ], 
    "ItemsToTrack": [ 
     { "ItemID": "1374328575", 
      "ItemLink" "www.somelink.com" } 
     { "ItemID": "357489574", 
      "ItemLink": "www.someotherlink.com" } 
    ] 
} 

我應該使用事務,並分別返回每個查詢?這是否會導致我支付與獨立查詢相同的速度懲罰?

回答

0

可以使用Newtonsoft nuget

這是非常容易使用。

+0

呀序列化我得到的數據之後。我在問如何在SQL或C#中構造這個查詢。 –

+0

我是否單獨查詢每個表並將每個結果加載到數組中,然後將整個事件解析爲JSON。或者有什麼方法可以收集我需要的一個數據庫中的所有數據? –

1

使用inner join

SELECT U.UserName, S.SavedSearches, I.ItemsToTrack 
FROM tblUsers U INNER JOIN tblSaveSearches S ON U.UserId = S.UserId 
INNER JOIN tblItemToTrack I ON U.UserId = I.UserId 

然後轉換返回結果設置爲UserOverviewModel列表,然後利用NewtonSoft JSON