Как Entity Framework узнает, влияет ли обновление / вставка / удаление на какие-либо строки? - PullRequest
1 голос
/ 28 ноября 2011

Я сопоставил функции вставки / обновления / удаления с сущностью Employee.Затем я изменил сущность с EmployeeID=100 и назвал SaveChanges, и, в свою очередь, EF вызвал процедуру обновления хранилища ( USP ) для этой сущности

a)

CREATE PROCEDURE UpdateEmployee
...   
AS

UPDATE Employee
SET ...
WHERE EmployeeID=1000 // EF throws an exception, since there aren't any rows with
                      // EmployeeID=1000 and thus no rows were affected 
SELECT ...

Сначала я подумал, что только информация, которую DB вернет обратно вызывающей стороне (вызывающей стороной является EF), является количеством строк, затронутых последним оператором в USP.Таким образом, даже если USP не удалось обновить какие-либо строки, EF все равно будет считать, что обновление прошло успешно, поскольку DB сообщит, что затронута одна строка (из-за оператора SELECT).Но похоже, что информация, возвращаемая вызывающей стороне, также указывает, были ли затронуты строки оператором SELECT или оператором INSERT/UPDATE/DELETE ?!Правильно?

b)

CREATE PROCEDURE UpdateEmployee
...
AS

INSERT INTO Employee
...

Я предполагаю, что информация, возвращаемая обратно вызывающей стороне, не указывает, были ли затронуты строки INSERT или UPDATE или DELETEзаявление?Это причина, по которой EF считает обновление успешным, даже если USP вставил строку вместо обновления строки (с EmployeeID=100)?

c) Но почему EF считает обновление успешнымдаже если USP не выполняет INSERT/UPDATE/DELETE операторов?Как отмечалось в моих предыдущих вопросах, разве информация, возвращаемая обратно вызывающей стороне, не указывает, были ли какие-либо строки затронуты INSERT/UPDATE/DELETE?Если да, то EF должен вызвать исключение при вызове следующего USP , но это не так.Почему?

CREATE PROCEDURE UpdateEmployee
...
AS

/*no statements*/

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...