我是否正确,假设如果另一个进程更新了数据库,那么我的NHibernate驱动的应用程序将会不同步?我差点使用非延迟更新。
我的目标数据库是mysql 5.0,如果它有任何区别。
答案 0 :(得分:1)
是的,当前会话中的对象将不同步,如果您获取它并且另一个进程更新相同的数据,则DataSet / DataTable将不同步。
答案 1 :(得分:1)
没有更多的背景,没有一种简单的方法可以回答这个问题。
您在考虑什么类型的应用程序(Web,桌面,其他)?
您认为完全不同步的是什么?
如果您的桌面应用程序具有打开的会话,其中包含已加载数据的打开会话,并且您在其他位置更改了相同的实体,当然数据库将不同步,但您可以使用Refresh更新这些实体。
如果使用NH二级缓存并在其他位置修改缓存实体,缓存内容将不同步,但您仍可以使用刷新或缓存控制方法直接从数据库进行更新。
在所有情况下,NH都通过使用版本属性为乐观并发提供支持;那些阻止修改不同步的实体。