使用Norm驱动对 MongoDb 做更新操作时,要注意更新数据的类型
时间:2011-01-04 来源:向往-SONG
我用的是Norm驱动,感觉要比MongoDb自带的驱动用起来爽多了,强类型支持使用方便直观!
先上模型和Action代码,做个简单的实例:
Model:Product类
代码public class Product
{
public string Id { get; set; }
[Required]
public int Category { get; set; }
[Required]
public string Name { get; set; }
[Required]
public float Price { get; set; }
public Product()
{
Id = System.Guid.NewGuid().ToString();
}
}
Action:批量更新方法
代码
public ActionResult BatchUpdate()
{
MongoDb.Get<Product>() //将价格等于123的产品的价格改为100
.Update(new { Price = 123 }, p => p.SetValue(y => y.Price, 100f), true, false);
return RedirectToAction("List", new { cate = 1, page = 1 });
}
Action:产品列表方法
代码public ActionResult List(int cate, int page)
{
IEnumerable<Product> list = MongoDb.Get<Product>()
.Find(new { Category = cate });
return View(list);
}
在BatchUpdate方法中,p.SetValue(y =>y.Price, 100f)中的100f的f一定不能少,否则它会当做int类型存储,更新的方法不会报错,
但跳转到List页面调用Find方法时,它就报如下图这么个奇怪的错误!
然后我到控制台上db.Product.Remove({Price:100})掉刚才错误设置的记录,再刷新List页面,就没有报错了。
不知道有谁碰见过没有,第一次用MongoDb请大家多多指点。
相关阅读 更多 +