2015-11-15 57 views
0

我有以下的財產在我的模型:爲什麼這個`set`訪問器不工作?

//PRODUCTS 
private ICollection<int> _productIds; 

[NotMapped] 
public ICollection<int> ProductIds 
{ 
    get { return Products.Select(s => s.Id).ToList(); } 
    set { _productIds = value; } 
} 

當我的代碼返回該模型的新實例,該set訪問似乎沒有采取。換句話說,我可以看到get訪問器正確地返回了產品ID的集合,但是當我嘗試使用set進行分配時,值爲空List<int>。例如:

var result = new Application 
{ 
    Id = application.Id, 
    . . . 
    ProductIds = application.ProductIds //<--this is a list of integers, 
         // but the new "result" object shows an empty list. 
}; 
+1

什麼是'Products'和你怎麼能指望設置'productIds'場改變的值'Products'? –

+2

爲什麼不返回get訪問器中的_productIds?這樣你總能得到並設置私有屬性_productIds。可能是您返回的產品列表爲空。你檢查了嗎? – wilsotobianco

+0

謝謝。 「產品」代表與我的「應用程序」實體相關的產品。 'ProductIds'只需要成爲相關產品ID的列表。我是新來定製'get;設置;'訪問器。 @wilsotobianco指出,我一定會錯過一些明顯的東西。會檢查 。 。 。 –

回答

3

這是非常不尋常的getset一個屬性的不同來源的工作。如果你總是從其他地方讀取值,你可能想要完全刪除set。

也許你正在尋找重寫屬性(即單元測試)的值是這樣的:

[NotMapped] 
    public ICollection<int> ProductIds 
    { 
     get { return _productIds != null ? 
      _productIds // return one that was "set" 
      : Products.Select(s => s.Id).ToList(); // read from DB 
     } 
     set { _productIds = value; } 
    } 
+0

這是票,謝謝!可以在一分鐘內接受。 –

+0

@MatthewPatrickCashatt取決於你在做什麼,你可能想檢查'懶惰' - 如果你需要緩存結果而不是覆蓋它,這會更好。 –

+0

@AlexiLevenkov我會檢查一下,謝謝。 –