顶者有分!NHibernate因为一级缓存,导致数据不一致的问题!

lszh001 lszh001 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
假设有两表表

表1 用户表(UserTable) 两个字段 “UserID”为主键

UserID UserName

U001 x某


表2 地址表(AddressTable) 三个字段 “AddressID”为主键 “UserID_fk”为外键,对应上“UserTable”的主键

AddressID UserID_fk AddressDetial

A001 U001 xx省XX市


视图(VUser) 就是把用户和地址连起来
SELECT [UserID],[UserName],[AddressDetial] FROM [UserTable] LEFT JOIN [AddressTable] ON [UserID_fk]=[UserName]

其中视图(VUser)是为了方便完整的信息在列表上显示,也方便多表多条件查询,读取方式就是把视图也当成一个表,创建了一个实体

现在问题出来了

问题1:
> 先用视图查出了一行记录(为了简单,假设就一条记录)
> 然后我用“Get()”和“Update()”更新了UserTable这条记录的UserName(比如由“x某”改为“y某”)
> 然后我刷新列表(列表是由视图出来的,所以和“Update()”的不是一个实体),列表不更新,因为被一级缓存了

各位有什么好的办法解决吗?
...全文

相关推荐

第7章NHibernate事务、并发和缓存[借鉴].pdf

- **悲观锁**:锁定数据,直到事务结束。这种方式可能会导致性能下降,但在某些情况下可以避免脏读等问题。#### 四、NHibernate缓存机制缓存是提高应用程序性能的关键手段之一。

czq131452007

高级缓存应用:NHibernate与***案例分析

本文还有配套的精品资源,点击获取 简介:NHibernate和 是.NET开发中重要的ORM和DI框架。本案例演示了如何结合这两个框架,特别是通过 集成SysyCache实现二级缓存。案例详细讲解了NHibernate的对象关系映射功能、一级和二级缓存的工作原理、缓存策略和更新机制,以及 的依赖注入和事务管理功能。通过本案例的学习...

刀总

NHibernate.CacheDb:使用 NHibernate 和 Intersystems 数据库缓存的解决方案

然而,缓存的使用需要谨慎,避免因缓存引发的新问题,例如数据一致性问题和内存管理问题。在实际项目中,应根据具体需求和环境进行细致的测试和调优。

可爱的小树懒

NHibernate事务、并发和缓存

NHibernate事务管理**在数据库操作中,事务是确保数据完整性和一致性的基础。NHibernate支持三种事务管理模式:自动提交、显式事务和程序化事务。

YnSky

NHibernate4.0数据库操作完整代码

二级缓存可以进一步优化性能,尤其是在高并发场景下,减少对数据库的访问压力。需要注意的是,二级缓存的使用需要谨慎,因为它可能会引发数据一致性问题,尤其是在多线程环境中。

Loki Zhao
评论 12
收藏 已收藏
分享
返回顶部
lszh001
C# 111,129 成员 642,540 内容