簡體   English   中英

NHibernate版本屬性不起作用

[英]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更新並立即保存。 僅在TransferFormValuesToSaveOrUpdate()之間, SaveOrUpdate()存在導致過期對象的競爭條件。

您可以啟用“ NHibernate.SQL”的日志記錄,以查看客戶端1的更新是否確實在客戶端2的SELECT之后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM