[英]NHibernate version property is not working
使用Sharp Architecture / Fluent NHibernate,我為我的類設置了Version
屬性(帶有int
),即使更新其對象正確地更新了Version編號,也不會引發錯誤,並且基本上合並了版本,而不是拋出例外。
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());
}
您說版本可以很好地更新,所以不應用約定會失效。
我猜沒有真正的並發更新。 您使用Load(model.Guid)
不會從數據庫中加載對象,但會為其創建代理。 它已加載到TransferFormValuesTo
更新並立即保存。 僅在TransferFormValuesTo
和SaveOrUpdate()
之間, SaveOrUpdate()
存在導致過期對象的競爭條件。
您可以啟用“ NHibernate.SQL”的日志記錄,以查看客戶端1的更新是否確實在客戶端2的SELECT之后
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.