【问题标题】:LINQ using multiple databases使用多个数据库的 LINQ
【发布时间】:2013-01-12 05:54:15
【问题描述】:

我是 MVC 和 LINQ 的新手,但我们正在一个新项目中使用它们,我需要一些帮助。我们有一个正在创建的 MVC 4 应用程序,我需要获取特定站点的详细信息,但信息位于 2 个不同的数据库中。 DB1 是大部分信息所在的位置,而 DB2 只有 2 个我需要的部分。简而言之,DB1 有表 Sites、SiteAddress、Address 和 ProductVersions。 DB2 有 State、Products、Versions 和 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; }
}

视图仅包含显示数据的标签,版本除外。我希望它是可用版本的下拉列表(这就是我创建列表的原因)。

谁能给我一些关于将其转换为 LINQ 并将其用作我的视图的数据模型的最佳方法的指导?

【问题讨论】:

  • 我认为你问题的很大一部分是回答here
  • 您使用什么作为 LINQ 提供程序? Linq to Sql ...实体框架?您可以使用多个数据库。 Linq to Sql 将允许您映射到三部分表名。 EF 没那么简单……你需要使用 sql server 同义词。

标签: asp.net-mvc linq


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多