2013-01-11 33 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问题。