您好我以前拥有以下实体
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);)
答案 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);
}
}