为什么这个“set”访问器不起作用

本文关键字:访问 不起作用 set 为什么 | 更新日期: 2023-09-27 18:22:05

我的模型中有以下属性:

//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.
};

为什么这个“set”访问器不起作用

一个属性的getset在不同的源中工作是非常不寻常的。如果您总是从其他地方读取值,则可能需要完全删除集合。

也许您希望覆盖属性的值(即用于单元测试),如下所示:

    [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; }
    }