我最近选择使用SubSonic在一个新的vb.net windows app项目中使用,到目前为止我真的很喜欢它!它是一个完美的开始,并以某种方式编写,使用t4模板,这使得它可以自定义。
无论如何,我正在使用Active record和MySql。我有一个表单,其控件使用bindingsource数据绑定到亚音速数据类。 当我:
在表格中进行一些更改
还使用MySql工作台更改db表中的数据,然后
通过表单
我没有得到数据冲突的警告/通知? 通过调用亚音速数据类
上的Save()来覆盖工作台更改这可能不是亚音速的特征还是我做错了? 如果不是,我将添加到模板中的保存代码,以便我:
加载新记录
将现有记录的时间戳与新记录的时间戳进行比较
比较每个字段的数据并构建一组更改
使用eventargs中的更改集合引发事件,以便我可以让用户决定要做什么。
如果它已经完成,我不想这样做,那就是全部。
答案 0 :(得分:0)
我没有得到任何警告/通知 数据冲突?工作台改变了 通过调用Save()来覆盖 亚音速数据类
这可能不是亚音速的特征 还是我做错了什么?
SubSonic中没有乐观的并发功能。此外,它还不是“尚未”,它是“时期” - 在SubSonic项目中没有发生重大的发展,并且有什么发展围绕支持Oracle(一个长期未实现的目标)。
如果没有,我将添加到保存代码中 模板
我将建议您放弃SubSonic并开始学习具有更强大功能的不同数据访问工具(如Entity Framework或NHibernate)将更有效。这可能不是您遇到SubSonic的最后一个限制。
如果没有,我将添加到保存代码中 模板,以便我:
加载新记录
将现有记录的时间戳与新记录的时间戳进行比较
比较每个字段的数据并构建一组更改
- 醇>
使用eventargs中的更改集合引发事件,以便我可以让用户决定要做什么。
首先加载记录的新副本是不必要的低效率。更好的替代方法是在timestamp列的更新中添加where子句,以便只有在主键和时间戳列都匹配时才会发生更新。您可以通过检查受影响的记录计数以这种方式检测并发冲突。如果受影响的记录计数为零,则记录已更新或删除,然后您可以加载副本并开始解决冲突。