【发布时间】:2012-03-09 04:50:19
【问题描述】:
使用 Sharp Architecture / Fluent NHibernate,我为我的班级设置了一个 Version 属性(带有 int),但是,即使更新其对象正确更新了版本号,也不会引发错误并且版本基本上是合并而不是抛出异常。
public class MyClassMap : IAutoMappingOverride<MyClass>
{
public void Override(AutoMapping<MyClass> mapping)
{
mapping.Version(x => x.Version);
mapping.OptimisticLock.Version();
}
}
请注意,两个并发提交的版本不同,但没有任何反应。
什么给了?
编辑:代码如下:
public ActionConfirmation SaveOrUpdate(IncidenciaDetalleModel model)
{
Incidencia incidencia = model.Codigo == null
? new Incidencia(Convert.ToInt32(model.Solicitante.Id))
: Load(model.Guid);
TransferFormValuesTo(incidencia, model);
// Invoke Sharp NHibernate's SaveOrUpdate()
Incidencia saved = base.SaveOrUpdate(incidencia);
return ActionConfirmation.CreateSuccessConfirmation(saved);
}
private void TransferFormValuesTo(Incidencia incidencia, IncidenciaDetalleModel model)
{
incidencia.Resumen = model.Resumen.Trim();
incidencia.Descripcion = model.Descripcion.Trim();
incidencia.Solicitante = model.Solicitante.Id.ToString(CultureInfo.InvariantCulture);
incidencia.Regional = regionalTask.Load(model.Regional.GetRegionalId());
}
【问题讨论】:
-
显示更新的代码。你用
session.Merge()吗? -
不,我使用常规 session.SaveOrUpdate()。我将在大约一个小时后开始工作时显示代码。谢谢。
-
是的,请显示将更改保存到数据库的代码。
-
@DanielSchilling 给你(代码)。
标签: asp.net-mvc nhibernate concurrency fluent-nhibernate