2010-10-11 5 views
2

Есть ли способ отслеживания изменений объектов EF между контекстами для приложений ASP.NET?Отслеживание изменений структуры Entity Framework

Самостоятельное отслеживание объектов для меня не работает, поскольку оно предназначено в первую очередь для WCF. И все подходы к отслеживанию изменений для POCO, которые я нашел, ориентированы на общий контекст.

ответ

2

Вам не нужно отслеживать изменения самостоятельно или использовать STE и хранить их в ViewState/Session между postbacks.

Редактировать: Если вы работаете с простым сущностью, вы можете использовать некоторые методы для отслеживания изменений для вас, но сначала вы должны загрузить объект из базы данных (= дополнительный запрос к базе данных). Затем вы можете использовать, например, метод ApplyCurrentValues ​​экземпляра ObjectContext. Эта оценка не работает для updating object complex graphs.

0

Предлагаю использовать отслеживание изменений, встроенное в SQL Server (http://technet.microsoft.com/en-us/library/cc280462(v=sql.105).aspx). Эта структура позволяет определить, изменилась ли данная строка, или даже если столбец изменился. Вам нужно как-то решить вопрос об изменении с тех пор. Отслеживание изменений на SQL-сервере выполняется путем передачи таблицы и желаемого «с тех пор, когда» номер версии в функцию ChangeTable (http://technet.microsoft.com/en-us/library/bb934145.aspx). Вы можете использовать результаты этой функции, чтобы определить, когда последняя таблица была изменена, и первичный ключ таблицы. Насколько я знаю, вы можете использовать это только для таблиц с определенным первичным ключом. Затем вы можете создать функцию, зависящую от таблицы, или представление, которое возвращает измененные записи. Оба из них легко потреблять, используя Entity Framework.

+0

(http://msdn.microsoft.com/en-us/data/hh859577.aspx сопоставление с табличной функцией) Ссылка на то, как использовать функцию таблицы из Entity. – Mauser

Смежные вопросы