Я использую EF4 с Visual Studio 2010 и SQL Server 2008 R2.
Я выбираю объект.После этого я вызываю хранимую процедуру, которая обновляет эту сущность, и повторно выбирает ее из базы данных.Когда я ловлю результат хранимой процедуры в коде, я вижу старые (ранее выбранные) свойства.
Очевидно, я смотрю на значение кэшированной сущности.Есть ли способ сообщить EF, что моя сущность была обновлена?Или какое-то магическое свойство?
Моя таблица базы данных (и сущность) выглядит примерно так:
CREATE TABLE [Message]
(
ID int IDENTITY(1, 1) PRIMARY KEY,
Content XML,
StateID int NOT NULL,
)
Мой SP выглядит примерно так:
CREATE PROCEDURE sp_Queue_s
AS
BEGIN
DECLARE @queue table ([ID] int NOT NULL)
BEGIN TRAN
INSERT INTO @queue
SELECT [ID]
FROM [Message]
WHERE StateID = 1
UPDATE [Message]
SET StateID = 2
WHERE ID IN (SELECT ID FROM @queue)
COMMIT TRAN
-- Select the queue
SELECT [ID], [Content], [Message]
FROM [Message]
WHERE [ID] IN (SELECT ID FROM @queue)
END
Мой код C # выглядит примерно так:
using (var context = new MyEntities())
{
int id = 1;
var message = context.Messages.Single(m => m.ID == id);
var messages = context.GetQueue(); // Function import of sp_Queue_s, maps on the Message entity
var messageUpdated = messages.Single(m => m.ID == id);
}