Dynamics CRM小窍门——数据读写锁
来源:互联网 发布:c#连接mysql命令 编辑:程序博客网 时间:2024/03/29 13:51
假设一个这样的场景:
1)新建商机的插件实例A读了一个自定义实体数据C的值100,将会通过计算把这个值更改为200。
2)新建商机的插件实例B在A完成计算前,读了C的值为100。
3) A把200的值保存下来后,B也得出200的值并保存。
Dynamics CRM的Plugin(插件)是运行在一个SQL Transaction里面的。 所以我们能利用这个特性,在插件里面做出简单的读写锁,而不用额外访问SQL server运行query。
这对于做自动计数插件是尤其有效。我们只需要在读取前先做一次更新,就能对数据做出一个读写锁,不会让其他线程读到脏数据。
具体如下:
1)新建商机的插件实例A把商机的GUID更新到C里面的一个字段,然后通过Retrieve再取得C并读C的值100,将会通过计算把这个值更改为200。
2)新建商机的插件实例B在A完成计算前,因为A对C的锁,B在计算完成前不能读C的值,B睡眠
3)A完成对C的更新,放开锁,B读取C的值200, 通过计算得到400并保存到C
虽然这样的插件能保证数据的完整一致,但肯定对性能有影响,对C的操作越频繁影响越大。请根据实际情况来采用。
谢谢阅读!
Jake Zhong
- Dynamics CRM小窍门——数据读写锁
- Dynamics CRM小窍门——表单的参数
- Dynamics CRM小窍门—— 关系的字段映像
- 使用SSIS对Dynamics CRM 系统进行数据迁移
- 使用Excel PowerQuery和PowerPivot分析Dynamics CRM数据
- Dynamics CRM 视图显示列的拷贝—view layout replicator
- Microsoft Dynamics CRM Downloads
- Microsoft Dynamics CRM特性
- Dynamics CRM 4.0 Plugins
- Dynamics CRM 2011 SDK
- Dynamics CRM 资源
- Dynamics CRM 2013 installation
- 关于 Dynamics CRM 2015
- CRM Dynamics之插件
- [Dynamics CRM]错误代码参考
- Dynamics CRM REST Builder
- Dynamics CRM build numbers
- JDBC操作数据库——resultset的操作小窍门
- Impala入门笔记
- java随机数
- 关于锁总结杂记2
- 生 气
- 抽象方法和虚方法的区别
- Dynamics CRM小窍门——数据读写锁
- 物理dg failover 后 system01.dbf 不一致
- 黑马程序员--Java基础之面向对象(2)
- C# 多态
- PresentModel UIViewController 的动画方式
- Python多线程学习
- Zigbee网络架构
- 如何查看自己机子上开了哪些端口
- oracle