2014-03-07 57 views
0

我正在與nhibernate和SQL服務器的MVC3應用程序。編寫了一個可重用的常規方法。請找到下面的代碼,讓我知道一個更好的方式來處理它。我觀察到要執行這段代碼需要很長時間。更好的方式來處理此代碼

 private void GetParentCompany(IEnumerable<Company> companiesList) 
      { 
     foreach (var company in companiesList) 
     { 
      long? dunsUltimateParent = company.DUNSUltimateParent; 
      Company ultimateParent = _companyService.GetCompanyByDUNS(Convert.ToInt64(dunsUltimateParent)); 
      if (ultimateParent != null) 
      { 
       company.UltimateParentName = ultimateParent.CompanyName; 
       company.UltimateCompanyId = ultimateParent.CompanyId; 
       company.UltimateParentDuns = ultimateParent.DUNS; 
      } 
     } 
    } 
+0

你能不能用在兩個表的SQL連接在一起產生只有一個模型(沒有必要做這種方法那樣) – AbstractChaos

+0

部署NHibernate的探查:http://www.hibernatingrhinos.com/products/nhprof並查看瓶頸在哪裏。 – George

回答

0

將索引添加到公司.DUNS列可能會有所幫助。但是,考慮引入從公司到(母公司)公司的多對一關係。

在公司類中放置一個具有公司類型的UltimateParent屬性。例如,UltimateParentName和UltimateParentDuns字段將是多餘的,您可以簡單地獲取company.UltimateParent.Name。 UltimateParent的映射可以使用fluent-nhibernate中的'References'來完成。

References(x => x.UltimateParent); 
+0

你能否給我一個關於代碼的想法。現在我有公共虛擬公司UltimateParent {get; set;}。我仍然無法知道如何在CompanyMap中編寫映射。此映射的唯一標識不是((CompanyId)表的主鍵,而是映射到列DUNS的稱爲DUNSUltimateParent的不同列。 – Vidya

相關問題