[英]How to create a view model object that gets information from multiple database tables
我有以下表格:
但是如何在asp.net mvc4 Web應用程序中創建視圖模型類,以便如果通過AccountDefinition.OrgID可以檢索以下內容:
•accountDefinition
•SDOrganization
•SDOrgPostalAddr
•AaaPostalAddress
我創建了以下CustomerDetails ViewModel
public class CustomerDetails
{
public AccountDefinition AccountDefinition {get; set;}
public SDOrganization SDOrganization {get; set;}
public virtual ICollection<AaaPostalAddress> AaaPostalAddress { get; set; }
public virtual ICollection< SDOrgPostalAddr> AaaPostalAddress { get;set; }
}
我有以下存儲庫方法,該方法應基於ORG_ID填充CustomerDetails:
public CustomerDetails GetCustomer(int ORG_id) {
CustomerDetails cd = new CustomerDetails();
var cd = from SDorg in cd.AccountDefinition // here I will b populating the CustomerDetials
}
我的第二個問題,因為我有數據庫經驗,所以我會做一個存儲過程,將表連接在一起,然后將結果返回!!!但是,由於我使用的是實體框架,所以我對如何做感到困惑?
BR
如果從數據庫模式創建了實體框架模型,則應該具有:
具有AccountDefinition.SDOrganization
引用導航屬性的AccountDefinition
類,因為兩者之間的關系顯然是一對一的
SDOrganization.AaaPostAddresses
集合導航屬性,因為該關系是多對多的。 SDOrgPostalAddr
表不應顯示為模型實體,因為它只是多對多鏈接表
使用此模型並將您的視圖模型更改為...
public class CustomerDetails
{
public AccountDefinition AccountDefinition {get; set;}
public SDOrganization SDOrganization {get; set;}
public ICollection<AaaPostalAddress> AaaPostalAddresses { get; set; }
}
...您應該能夠使用以下方法獲得結果:
var customerDetails = context.AccountDefinitions
.Where(a => a.OrgID == givenOrgID)
.Select(a => new CustomerDetails
{
AccountDefinition = a,
SDOrganization = a.SDOrganization,
AaaPostalAddresses = a.SDOrganization.AaaPostalAddresses
})
.SingleOrDefault();
您也可以通過渴望加載 AccountDefinition
實體以及所需的導航屬性來獲取相同的數據:
var accountDefinition = context.AccountDefinitions
.Include(a => a.SDOrganization.AaaPostalAddresses)
.SingleOrDefault(a => a.OrgID == givenOrgID);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.