Javascript Breezejs带Delete的唯一约束
我有下表:Javascript Breezejs带Delete的唯一约束,javascript,entity-framework,sql-server-2008,breeze,Javascript,Entity Framework,Sql Server 2008,Breeze,我有下表: CREATE TABLE Foo AS ( Id int not null primary key, YesNo char(1) not null default('N') ) 具有以下约束-一行且只有一行的值为“Y” CREATE UNIQUE NONCLUSTERED INDEX [IX_YesNo] ON [dbo].[Foo] ( [YesNo] ASC ) WHERE ([YesNo]=('Y')) 应用程序代码Breeze JS强制一行始终为“Y”。因
CREATE TABLE Foo AS (
Id int not null primary key,
YesNo char(1) not null default('N')
)
具有以下约束-一行且只有一行的值为“Y”
CREATE UNIQUE NONCLUSTERED INDEX [IX_YesNo] ON [dbo].[Foo]
(
[YesNo] ASC
)
WHERE ([YesNo]=('Y'))
应用程序代码Breeze JS强制一行始终为“Y”。因此,如果删除YesNo='Y'的行,BLL会将另一行的YesNo字段设置为Y
origEntity.entityAspect.setDeleted();
otherEntity.YesNo('Y');
在执行实际的DB操作时,Breeze首先将另一行更新为Y,然后再执行原始行的删除。这违反了唯一约束。是否有一种简单的方法使删除首先发生,或者我需要特殊的服务器端删除处理?Breeze不控制在服务器上执行的操作顺序。你没有说你在服务器上使用什么技术,但问题标签告诉我它是EF和SQL server。在这种情况下,是EF在删除之前进行更新 我希望有办法告诉EF该怎么做。据我所知,那是不可能的 您可以接管,而且这样做并不困难,特别是如果您可以将此操作序列与其他操作隔离开来的话。看一看beforeSave。。。方法。如果您可能需要在同一事务中保存两部分,请了解如何设置自己的环境事务,以便可以直接对EF或数据库进行两次调用,一次执行删除,另一次执行更新