ビューに表示したいデータのViewModelを作成しようとしています。問題は、表示されているデータが2つのデータベースとそれぞれの中にある複数のテーブルに分散していることです。複数のコンテキスト間でLinqクエリを結合できないことを読みました。これは理にかなっています。また、EF5でコードファーストを使用してストアドプロシージャを使用することはできないことも読みました。 Linqクエリを実行し、それらを1つのViewModelに結合しようとします...そこに到達する方法がわかりません。
これが私のLinqクエリです:
var csdContext = new CSDContext(CustomerCode);
var masterContext = new MasterContext();
//Only returns 1 row - which is what we want.
List<Site> sites = (from s in csdContext.Sites
join sa in csdContext.SiteAddresses
on s.SiteID equals sa.SiteID
join a in csdContext.Addresses
on sa.AddressID equals a.AddressID
join spv in csdContext.SiteProductVersions
on s.SiteID equals spv.ProductVersionID
where s.SiteID == id
select s).ToList();
//List
List<States> states = (from s in masterContext.StatesTable
select s).ToList();
私のViewModelは次のようになります。
public class SiteDetailsViewModel
{
public string Address { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string StateCode { get; set; }
public string ZipCode { get; set; }
public string OfficePhone { get; set; }
public string MobilePhone { get; set; }
public string AlternativePhone { get; set; }
public int ProductVersionID { get; set; }
}
基本的に、これらのテーブルから次のデータが必要です
。csdContext-
住所住所
住所2
市
の郵便番号
csdContext-サイト
OfficePhoneMobilePhoneAlternativePhone
_
csdContext-SiteProductVersions
ProductVersionID
masterContext-状態
StateCode
SQLでテーブルを結合する方法は次のとおりです。
SELECT csd_a.Address, csd_a.Address2, csd_a.City, mstr_st.StateCode, csd_a.ZipCode, csd_s.OfficePhone, csd_s.MobilePhone,
csd_s.AlternativePhone, csd_spv.ProductVersionID
FROM CSD.dbo.Sites AS csd_s
INNER JOIN CSD.dbo.SiteAddress AS csd_sa ON csd_sa.SiteID = csd_s.SiteID
INNER JOIN CSD.dbo.Address AS csd_a ON csd_a.AddressID = csd_sa.AddressID
INNER JOIN CSD.dbo.SiteProductVersions AS csd_spv ON csd_s.SiteID = csd_spv.SiteID
INNER JOIN MasterDB.dbo.States AS mstr_st ON mstr_st.StateID = csd_a.StateID
これらの3つの結果をマージして、SiteDetailsViewModelのViewModelデータを作成する方法がわかりません。誰か助けてもらえますか?