2
我有一個使用實體框架的C#應用程序,我在數據庫中創建了一個觸發器,在插入和更新後觸發。爲什麼SQL Server觸發器在使用實體框架插入後不會觸發?
我注意到,當我插入或使用EF代碼更新,在另一側的觸發器觸發,當我插入或通過SQL Server更新
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[updateLoanFinishing]
ON [dbo].[Installments_Paids]
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
DECLARE @totalLoan decimal, @totalpaid decimal, @balance decimal
SELECT @totalLoan = l.Total_Amount
FROM dbo.Loans l
SELECT @totalpaid = ISNULL(SUM(ip.Paid_Amount), 0)
FROM dbo.Installments_Paids ip
SELECT @balance = @totalLoan - @totalpaid
IF @balance = 0
BEGIN
UPDATE dbo.Loans
SET dbo.Loans.IsFinish = 1 -- bit
FROM dbo.Loans l
INNER JOIN INSERTED i ON i.Loan_ID = l.Loan_ID
END
ELSE IF @balance > 0
BEGIN
UPDATE dbo.Loans
SET dbo.Loans.IsFinish = 0 -- bit
FROM dbo.Loans l
INNER JOIN INSERTED i ON i.Loan_ID = l.Loan_ID
END
END
實體框架沒有任何讓它繞過觸發器的魔法。嘗試運行SQL Profiler以查看命中數據庫的命令。 – Saadi
你忘了在你的數據庫上下文中使用SaveChanges()嗎? – zaitsman
不,我沒有忘記 –