1
私はデータベースモデル持っているSQLサーバーでUPDATEクエリを生成します。LINQのは、DELETEは
CONSTRAINT [FK_applications_orders] FOREIGN KEY([ORDER_ID])REFERENCES [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();
}
私は、この行var apps = Database...
が生成何点検し、これを見るためにSQLプロファイラを開きます。
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
なぜSQL ServerでDelete呼び出しがUPDATEクエリを生成するのですか?
あなたはコメントアウトした場合、 'Database.Delete(オーダー);'それはまだ発生していますか? – mjwills
注文を削除するとアプリケーションテーブルが更新され、制約が適用されると思います。 – Stuart
@mjwills私は 'Database.Delete(order)'をコメントアウトするとしません。 –