簡體   English   中英

如何創建一個從多個數據庫表中獲取信息的視圖模型對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM