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的同义词。 –