Entity Framework не может прочитать изменения для вычисляемых столбцов - PullRequest
0 голосов
/ 13 марта 2012

Я работаю над приложением, в котором я использую Entity Framewirk 4 и SQL Server 2008, я вызываю свой код из службы WCF Rest. Когда я добавляю новую запись в базу данных, используя службу и в том же сеансе, запрашивая базу данных у этой записи, он возвращает мне всю информацию, кроме той, которая находится в вычисляемых столбцах, допускающих обнуляемость, но если я выполняю тот же запрос в новом сеанс, он мне все вернет.

Определение для вычисляемого столбца:

[ComputedColumn] AS (dateadd (минута, [OffsetMinutes], [ActualTimeUTC]))

Пожалуйста, просветите меня об этом.

Спасибо

1 Ответ

1 голос
/ 13 марта 2012

Когда я добавляю новую запись в базу данных, используя сервис

Если вы сделаете это, он уже должен заполнить вычисленные данные для вас в текущем экземпляре объекта. Вам просто нужно пометить столбец как вычисленный сначала в коде:

modelBuilder.Entity<YourEntity>()
            .Propety(e => e.YourComputedProperty)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);

или аннотации данных

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]

или EDMX через StoreGeneratedPattern

в том же сеансе, запрашивающем базу данных у этой записи, он возвращает мне всю информацию, кроме той, которая находится в вычисляемых столбцах с нулевым значением

Возвращает текущее состояние, известное по контексту из-за карты идентификации . EF на самом деле не загружает данные из базы данных снова (даже если выполняет запрос), если вы не заставите это сделать это. По умолчанию он использует данные, уже сохраненные в контексте - данные, которые вы вставили.

Для принудительной перезагрузки вы можете, например, сделать:

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