2013-05-10 3 views
0

Я разрабатываю социальное приложение, которое позволит пользователям создавать стены для сообщений (например, на FB) и приглашать своих друзей. У меня есть таблица в моей БД, которая содержит стены и их версию (в TimeStamp), что означает их последнее время обновления.Управление версиями строк в NHibernate

Когда кто-то обновляет стену, версия будет обновлена, и я хочу, чтобы пользователь получил эту версию. Я использую NHibernate и определяю, что моя строка версии является типом Версии, но я не смог найти способ обновить строку И получить новую версию в одном атомном действии, чтобы предотвратить проблемы с параллелизмом.

Есть ли способ сделать это? Есть ли лучший способ решить эту проблему?

+0

Обновления транзакционной. Какие проблемы с параллелизмом вы могли бы иметь? –

+0

Не знаю. Я просто хотел решение, которое не может вызвать таких проблем. – Lidor

ответ

0

базовый объект,

public abstract class AuditBase 
{  
    private int? _rowVersion = 0; 

    public virtual int? RowVersion 
    { 
     get { return _rowVersion; } 
     set { _rowVersion = value; } 
    } 
} 

сущность,

public partial class AXSERVICES : AuditBase 
{} 

вы можете попробовать DefaultUpdateEventListener и DefaultSaveEventListener

, например

public class CustomSaveEventListener : DefaultSaveEventListener 
{ 

    protected override object PerformSave(object entity, object id, IEntityPersister persister, bool useIdentityColumn, object anything, IEventSource source, bool requiresImmediateIdAccess) 
    { 
     ((AuditBase)entity).RowVersion = 0; 
     object obj = base.PerformSave(entity, id, persister, useIdentityColumn, anything, source, requiresImmediateIdAccess); 

return obj; 
     } 
    } 
Смежные вопросы