RavenDb并保护文档/实体中的集合

时间:2013-01-04 11:21:52

标签: ravendb

您好我以前拥有以下实体

public class Foo
{
    private IList<Bar> _bars;

    public IEnumerable<Bar> Bars { get { return bars; } }

    public void Add(Bar bar)
    {
        /* Validation logic here */

        _bars.Add(bar);
    } 
}

我怀疑这不适用于RavenDb或者我错了吗? 我可以保持我的收藏与禁止外部操纵的酒吧(换句话说不允许foo.Bars.Add(bar);)

2 个答案:

答案 0 :(得分:1)

我发现解决方案使用两个属性。

public IEnumerable Bars { get { return InnerBars; } }

private List InnerBars { get; set; }}

答案 1 :(得分:0)

自动属性上的私有setter是最简单,最易读的方式,没有做任何特殊的事情。

public class Foo
{
    public IEnumerable<Bar> Bars { get; private set; }

    public void Add(Bar bar)
    {
        Bars.Add(bar);
    }
}

另一种方式是属性:

// pick one or the other
using Newtonsoft.Json // on 1.0
using Raven.Imports.Newtonsoft.Json // on 2.0

...

public class Foo
{
    [JsonProperty(PropertyName = "Bars")]
    private IList<Bar> _bars;

    [JsonIgnore]
    public IEnumerable<Bar> Bars { get { return bars; } }

    public void Add(Bar bar)
    {
        _bars.Add(bar);
    }
}