lep*_*pie 5 .net c# linq linq-to-sql
我有一个如下所示的表:
TABLE Foo
{
Guid Id [PK],
int A [FK],
int B [FK],
int C [FK],
}
Run Code Online (Sandbox Code Playgroud)
对A,B和C的唯一约束.
现在说,例如,你插入一个新的PK行,其中A = 1,B = 1,C = 1.
SubmitChanges(),都开心.
现在编辑表格.
您删除上一个条目,并插入一个具有F = 1,B = 1,C = 1的fresk PK的行.
SubmitChanges()繁荣!唯一键约束SQL异常.
从我所看到的,它尝试首先插入新记录,然后尝试删除前一个记录.我甚至可以理解,无法确定需要发生的顺序.
但是我能做些什么呢?将这三个领域作为复合PK(并删除旧的)将是一个更好的解决方案或甚至不工作?
目前,"解决方案"是从数据库中删除唯一约束(但我宁愿不这样做).
一种选择是创建一个事务(连接绑定事务或 )TransactionScope- 删除记录 和SubmitChanges,添加记录 和SubmitChanges,然后最后提交事务(或者如果崩溃则回滚)。
请注意,您可以通过数据上下文构造函数 IIRC 关联连接绑定事务。TransactionScope应该也能工作,而且更容易做到——但效率不那么高。
或者,编写一个在数据库中执行此交换作业的 SP,并通过数据上下文访问该 SP。
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |