1
我有数据库模型:LINQ的DELETE生成UPDATE查询的SQL服务器
约束[FK_applications_orders]外键([ORDER_ID])参考文献[DBO] [单]([ORDER_ID])
而且控制器动作:
using (var tx = Database.Database.BeginTransaction())
{
var order = Database.Set<Order>().Find(someID);
var apps = Database.Set<Applications>().Where(x => x.Order.Id == order.Id).ToList();
Database.Delete(order);
tx.Commit();
}
我打开SQL事件探查器来检查这行var apps = Database...
产生,并期待在此:
exec sp_executesql N'UPDATE [dbo].[Applications]
SET [order_id] = NULL
WHERE (([application_id] = @0) AND ([order_id] = @1))
',N'@0 uniqueidentifier,@1 int',@0=SomeId,@1=SomeOtherId
那么,为什么Delete调用会在SQL Server中生成一个UPDATE查询呢?
如果您注释掉'Database.Delete(订单);'它仍时有发生? – mjwills
我认为您的订单删除导致应用程序表被更新以强制执行您的约束。 – Stuart
@mjwills它不会,如果我注释掉'Database.Delete(order)' –