私はMVCとLINQを初めて使用しますが、新しいプロジェクトでそれらを使用しているため、サポートが必要です。作成しているMVC4アプリがあり、特定のサイトの詳細を取得する必要がありますが、情報は2つの異なるデータベースにあります。DB1はほとんどの情報が存在する場所ですが、DB2には必要なものが2つしかありません。つまり、DB1には、Sites、SiteAddress、Address、およびProductVersionsというテーブルがあります。 状態、製品、バージョン、およびProductVersionsとしてのDB2。 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を使用してさまざまなデータベース間でテーブルを結合する方法はなく、リストを使用してそれらを結合する方法がないことがわかりました。これが問題です。
次のようなビューのモデルを作成しました。
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に変換し、ビューのデータモデルとして使用するための最良の方法について、誰かが私にガイダンスを教えてもらえますか?