所以今天我意识到我在更新/推送到数组时遇到了问题。我在一个只有一个自动属性的类中有一个数组
public List<things> Things { get; set; }
这可以作为null放入数据库中,如果我以后需要编写像
这样的查询var query = Query.EQ("_id", something.Id);
var update = Update.Push("Things", thing.ToBsonDocument());
coll.Update(query, update);
我现在遇到了一个问题,因为我的更新会抛出一个我试图推送到NULL数组的异常。
我通过在课堂上放置私人支持者来解决这个问题
private List<things> _things = new List<things>();
public List<things> Things { get { return _things;} set { _things = value;} }
现在至少一个新实例将有一个空数组,有人需要明确说出
Things = null
但我想知道是否有更好的方法来解决这个问题。装饰?蒙古指数?有话要说,嘿,这个领域必须始终是一个数组。
我一直对汽车属性持怀疑态度,而更喜欢使用私人支持者,尤其是非原始人。只是想知道Mongo引擎中是否存在更强大的解决方案。
答案 0 :(得分:3)
如果您更喜欢使用autoproperties,您可以让构造函数创建空列表。
public YourClass()
{
Things = new List<things>();
}
然后auto属性工作简单,唯一具有任何丑陋的地方是构造函数。
这就是我的工作
答案 1 :(得分:2)
当你启动你的应用程序时,一些转换脚本也不是一个坏主意
<code>
var emptyInterUsers = db.List<UserEntity>(u => u.Interests == null);
if (emptyInterUsers.Any())
{
foreach (var u in emptyInterUsers)
{
if (u.Interests == null)
{
var filter = db.F<UserEntity>().Eq(f => f.id, u.id);
var update = db.U<UserEntity>().Set(f => f.Interests, new List<int>());
var res = await db.UpdateAsync(filter, update);
}
}
}
</code>