0

IRepositoryBase列名實體框架的基礎信息庫

IQueryable<T> GetAll(Expression<Func<T, bool>> predicate = null, params Expression<Func<T, object>>[] includes); 

RepositoryBase

public IQueryable<T> GetAll([OptionalAttribute][DefaultParameterValueAttribute(null)]Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] includes)  
{ 
    var set = CreateSet().IncludeMultiple(includes); 
    return (predicate == null) ? set : set.Where(predicate);    
} 

IAccountService

IEnumerable<int> GetAllReferenceIds(); 

帳戶服務

public IEnumerable<int> GetAllReferenceIds()  
{  
    var accountOwners = _accountOwnerRepository.GetAll(); 
    return accountOwners.Select(m => m.ReferenceId).ToList(); 
} 

的AccountController

public ActionResult ReferenceIdPartial()  
{ 

ViewData["AccountOwners"] = accountOwnerService.GetAllReferenceIds(); 

return PartialView(); 

} 

MVC局部視圖 - DevExpress的組合框MVC擴展

settings.Properties.Columns.Add("ReferenceId", "Reference Id", Unit.Percentage(100)); 

錯誤 - 列ReferenceId找不到

我通過GetReferenceIds()發送int集合

有沒有辦法從Controller調用列。就像AccountOwner(a => a.ReferenceIds,選擇ReferenceIds) - 我應該能夠獲得列名以及數據。

謝謝你的時間。

+0

誰拋出異常「*列ReferenceId未找到*」?組合框代碼還是來自'GetAllReferenceIds'方法? – Slauma

+0

它來自組合框。謝謝 – tjRulz

回答

0

這是一個射進黑暗中,我實際上只瞭解你的最後一句話「我應該能夠獲得列名以及數據」 - 並可以想像,如果一個集合綁定到組合框(我不知道DevExpress組合框擴展)組合框控件想要對象的集合屬性名稱/屬性值對而不是隻有一個值集合(int)。所以,不接觸AccountService你可以嘗試:

public ActionResult ReferenceIdPartial()  
{ 
    ViewData["AccountOwners"] = accountOwnerService.GetAllReferenceIds() 
     .Select(i => new { ReferenceId = i }); 

    return PartialView(); 
} 

ViewData["AccountOwners"]現在將舉行(匿名)對象的集合。每個對象都有一個名爲ReferenceId的屬性,其值爲i,取自您從服務返回的ID。

+0

嗨Slauma - 感謝您的答覆。當我這樣做時,我仍然可以看到所有列。然後我能夠得到referenceId列。但是我不想得到所有的列 - 因爲列的數量是〜45,它正在影響應用程序的速度。 – tjRulz

+0

@tjRulz:但'GetAllReferenceIds'只返回'IEnumerable '。這只是一個數字清單。如何包含所有列? – Slauma

+0

嗨Slauma。對不起。在我閱讀您的回覆之前,我在最後更改了代碼。然後我可以使用上面的代碼。再次感謝。 – tjRulz