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並將其用作我的視圖的數據模型的最佳方法的指導嗎?
我認爲你的問題的重要部分是答案[這裏](http://stackoverflow.com/questions/352949/linq-across-multiple-databases) –
你用什麼LINQ提供程序? Linq to Sql ...實體框架?您可以使用多個數據庫。 Linq to Sql將允許您映射到三部分表名。 EF並非如此簡單......您將需要使用sql server的同義詞。 –