使用MongoDB更新内部列表

时间:2012-07-21 17:02:12

标签: c# asp.net-mvc

我有一个对象

public class Object1{
public List<Object2> {get;set;}
}


public class Object2{
public Name{get;set;}
public Address{get;set;}
}

我有一个功能,用户只能更新一个Object2实例。所以我保存Object2的代码看起来像

[HttpPost]
public ActionResult SaveObject2(Object2 obj2)
{
  if (obj2.Id == null){
       //Add Logic
       obj1.Obj2List.Add(obj2)  
    }
   else{
      // Update logic
   }
}

但是obj2.Id永远不会为null.Id的类型为ObjectId。我如何检查逻辑以确定是否需要插入或更新?我使用官方C#驱动程序使用asp.net MVC 3和Mongo DB。

由于

1 个答案:

答案 0 :(得分:2)

ObjectId类型是一个结构,而不是一个类 - 所以它永远不会是null。请检查ObjectId.Empty

但请注意:我认为您将Object2的id存储在请求之间的某个隐藏字段中。如果是这种情况,请注意恶意用户可以使用HTTP代理(例如Fiddler)轻松更改ID,从而诱使您相信Object2正在更新而不是添加。

根据您尝试执行的操作的上下文,我建议执行一些额外的检查,以更可靠地确定您是否应插入或更新对象。