Я использую C #, EF и SQL Server и у меня мало таблиц с родительскими и дочерними отношениями.Их больше 2, но в этом примере для простоты я буду использовать только 2.
Настольная книга
Id
DateModified
RowVersion
Таблица страниц
Id
BookId - this is foreign key to Book.Id
RowVersion
Когда какая-либо страница / страницы являются обновлениями, мне нужно обновить DateModified
в таблице Book.
Мы используем RowVersion
для отслеживания изменений, так как это уникальное значение, которое я хочувсегда иметь возможность получать последние изменения для каждой книги, просто делая что-то вроде
SELECT * FROM Page
WHERE RowVersion > Book.RowVersion
Но для этого мне нужно убедиться, что таблица RowVersion
в Book
ВСЕГДА обновляется до RowVersions
in Pages
.
В моем слое EDM у меня сейчас есть что-то вроде этого:
class Page
{
void OnPageChanged() //this is hooked to OnPropertyChanged
{
this.Book.UpdateDateModified(DataTime.Now);
}
}
В результате этого страница обновляется первой, а ее RowVersion обновляется первым послетранзакция совершается.Это не то, что мне нужно.
Вопрос, если я перейду OnPageChanged()
для обработки события OnPropertyChanging
- будет ли это гарантировать последовательность?OnPropertyChanged
определяет порядок обновления в sql, генерируемый EF?Любые другие предложения для этого случая?