2013-01-11 64 views
1

我是新來的MVC & LINQ,但我們正在使用它們在一個新的項目,我需要一些幫助。我們正在創建一個MVC 4應用程序,我需要獲取特定站點的詳細信息,但信息位於2個不同的數據庫中。 DB1是大多數信息所在的地方,而DB2只有我需要的兩個部分。簡而言之,DB1具有表格站點,站點地址,地址和產品版本。DB2作爲國家,產品,版本和ProductVersions。在SQL中,我可以使用以下方法來得到我需要什麼:LINQ使用多個數據庫

SELECT db1_s.SiteName, db1_s.PhoneNumber, db1_a.Address, db1_a.Address2, db1_a.City, db2_st.StateName, db1_a.ZipCode, db2_v.VersionNumber, db1_pv.ProductVersionID 
FROM DB1.dbo.Sites db1_s 
INNER JOIN DB1.dbo.SiteAddress db1_sa ON db1_s.SiteID = db1_sa.SiteID 
INNER JOIN DB1.dbo.Address db1_a ON db1_sa.AddressID = db1_a.AddressID 
INNER JOIN DB1.dbo.SiteProductVersions db1_spv ON db1_s.SiteID = db1_spv.SiteID 
INNER JOIN DB1.dbo.ProductVersions db1_pv ON db1_spv.ProductVersionID = db1_pv.ProductVersionID 
INNER JOIN DB2.dbo.States db2_st ON db1_a.StateID = db2_st.StateID 
INNER JOIN DB2.dbo.ProductVersions db2_pv ON db1_spv.ProductVersionID = db2_pv.ProductVersionID 
INNER JOIN DB2.dbo.Versions db2_v ON db2_pv.VersionID = db2_v.VersionID 
WHERE db1_s.SiteID = 35 

我做了一些研究,發現真的沒有辦法使用LINQ跨不同的數據庫連接表,而不是使用列表和它們組合起來,這是我遇到困難的地方。

我創建用於查看模型,像這樣:

public class SiteDetailsViewModel 
{ 
    public string SiteName { get; set; } 
    public string Address { get; set; } 
    public string Address2 { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string ZipCode { get; set; } 

    public string PhoneNumber { get; set; } 

    public int ProductVersionId { get; set; } 
    public List<Version> Versions { get; set; } 
} 

視圖只包含要顯示的標籤中的數據,與版本除外。我希望這是可用版本的下拉列表(這就是我創建List的原因)。

任何人都可以給我一些關於將其轉換爲LINQ並將其用作我的視圖的數據模型的最佳方法的指導嗎?

+1

我認爲你的問題的重要部分是答案[這裏](http://stackoverflow.com/questions/352949/linq-across-multiple-databases) –

+0

你用什麼LINQ提供程序? Linq to Sql ...實體框架?您可以使用多個數據庫。 Linq to Sql將允許您映射到三部分表名。 EF並非如此簡單......您將需要使用sql server的同義詞。 –

回答

0

您可以使用代碼項目中的this文章或this問題。