LINQ使用多个数据库

时间:2013-01-11 20:55:22

标签: asp.net-mvc linq

我是MVC& LINQ,但我们在一个新项目中使用它们,我需要一些帮助。我们正在创建一个MVC 4应用程序,我需要获取特定站点的详细信息,但信息位于2个不同的数据库中。 DB1是大多数信息驻留的地方,而DB2只有2个我需要的部分。简而言之, DB1具有表Sites,SiteAddress,Address和ProductVersions。 DB2作为状态,产品,版本和ProductVersions。在SQL中,我可以使用以下内容得到我需要的东西:

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来连接不同数据库中的表,而是使用Lists并将它们组合起来,这是我遇到困难的地方。

我为视图创建了一个模型:

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 个答案:

答案 0 :(得分:0)

您可以在代码项目中使用this文章或this问题。