上周末,我意识到我正在使用的NHibernate作为sqlite数据库的ORM的应用程序存在并发问题。
我基本上在javascript中循环遍历集合并执行以下操作:
var item = new Item();
item.id = 1;
item.name = 2;
$.post("Item/Save", $.toJSON(item), function(data, testStatus) {
/*User can be notified that the item was saved successfully*/
}, "text");
我的服务器代码如下所示:
public ActionResult Save()
{
string json = Request.Form[0];
var serializer = new DataContractJsonSerializer(typeof(JsonItem));
var memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(json));
JsonItem item = (JsonItem)serializer.ReadObject(memoryStream);
memoryStream.Close();
SaveItem(item);
return Content("success");
}
并发问题显然发生在为迭代的每个元素调用Save()的循环中,但我不确定如何容纳和防止这种情况。任何建议都表示赞赏。
答案 0 :(得分:1)
什么是并发问题?
我不明白你的并发问题。
评论:如果你迭代集合,在回发中你重新加载窗口...嗯......这里有一个潜在的问题。第一个回发将丢弃任何待处理的工作,完全刷新页面。
建议:不要迭代,在一次Ajax调用中发送完整的集合。