我有一个对象

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。

谢谢

最佳答案

ObjectId类型是结构,而不是类-因此永远不会是null。检查ObjectId.Empty,而不是。

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

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

关于c# - 使用MongoDB更新内部列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11594142/

10-13 08:03