2013-12-04 2 views
5

Недавно я обновил программу EntityFramework с 5 по 6 через программу обновления NuGet. Все, казалось, идет хорошо, и я создал и выполнил свое заявление. Когда я пытался получить первый объект из базы данных, я получил эту ошибку:IsRowVersion может быть настроен только для свойств массива байтов

The property 'UpdatedDate' is not a Byte array. IsRowVersion can only be configured for Byte array properties.

Вот кусок кода, он имеет в виду:

[Timestamp] 
public virtual DateTime UpdatedDate { get; set; } 

Я попытался удалить атрибут временной метки, но независимо от того, была ли такая же ошибка. Как исправить это, чтобы запустить приложение с EF6?

+2

Ваш код является неправильным. 'ROWVERSION' /' TIMESTAMP' является байтовым массивом и не имеет ничего общего со временем. http://technet.microsoft.com/en-us/library/ms182776.aspx – SLaks

+0

Именно то, что сказал Слэкс. Имя 'Timestamp' ** очень ** вводит в заблуждение для этого. К сожалению, это продолжается до EntityFramework ... – user3038092

+0

Я не понимаю. Столбец таблицы - это datetime, и для свойства модели есть атрибут Timestamp. Даже если это неправильно, почему я получаю такое же сообщение об ошибке, когда я удаляю атрибут timestamp? – Sparafusile

ответ

10

Attributes in EF

Если вы используете [TimeStamp] атрибут, то свойство должно быть байт []
Это затем отображается Rowversion в SQL сервере

Если вы хотите какой-то другой тип поля как поля параллелизмом. Использование атрибута [ConcurrencyCheck]

+0

Или в Fluent API: modelBuilder.Entity () .Property (e => e.UpdatedDate) .IsConcurrencyToken(); – Riva

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