SQL Server Compact Edition - 序列列?
我有一个使用 SQL Server Compact(3.5 并将升级到 4.0)的简单桌面应用程序。
在我的主客户表中,除了 ID
列(即 PK 并且自动递增)之外,我还需要保存一个以某个数字(20000 )并且是独一无二的。
通过现有最高行计算下一个数字的选项不是一个好选择 - 如果其他客户端在我的第一个选择和插入之间添加客户 - 我会遇到问题。
正如 许多 地点, SqlCE自增列应该是Identity
列,并且每个表中只能有一个Identity
列。
您知道还有其他做法可以解决这个问题吗?
顺便说一句 - 我正在使用 Linq to ADO .net。
编辑:
刚刚找到此链接并发现我什至可以将 Identity 选项与 linq to Entities 框架一起使用: http://erikej.blogspot.com/ 2010/04/解决方案到服务器生成的密钥-and.html
I have a simple desktop application that is using SQL Server Compact (3.5 and about to be upgraded to 4.0).
In my main customers table, in addition to the ID
column - which is the PK and is auto incremented, I need to hold a Number
column that starts in some number (20000) and is unique.
The option of computing the next number by the existing highest row is not a good one - if other client is adding a customer between my first selection to my inserting - I'll have a problem.
As pointed in many places, SqlCE auto incremented column should be Identity
column, and in each table could be only one Identity
column.
Is there other practice you know to solve this problem?
BTW - I am using Linq to ADO .net.
Edit:
Just found this link and discovered that I can use even the Identity option with linq to Entities framework:
http://erikej.blogspot.com/2010/04/solutions-to-server-generated-keys-and.html
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这个动作基本上是错误的
但如果你坚持这样做
当您选择列的最大值时,您需要进行事务。因此,您可以确保其他用户在此操作完成之前无法更新(和更改最大值)。
this action is wrong basically
but if you persist that
you need a transaction when you select max value of your column.so you ensure another user can't update(and change max value) until this action complete.