Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Breezejs带Delete的唯一约束_Javascript_Entity Framework_Sql Server 2008_Breeze - Fatal编程技术网

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或数据库进行两次调用,一次执行删除,另一次执行更新