Entity Framework 4 и SQL Server 2008 R2 Изменение захвата данных не играют красиво вместе

StackOverflow https://stackoverflow.com/questions/3720490

Вопрос

Когда я стараюсь использовать эти две функции вместе, я получаю ошибку компиляции на мою модель (Примечание, я переименовал ли предприятие для моей таблицы «ContentHistory», и мой тестовый проект «ContentHistory» называется «Domainservices.unittest»:

Error 39 Property 'DomainServices.Web.ContentHistory.C___seqval' is marked as a key
property and is of Type 'System.Byte[]', which is not a supported type for a key member.
DomainServices.UnitTests

Кто-нибудь здесь получил CDC и EF4, чтобы играть красиво вместе?

Это было полезно?

Решение

Хорошо, вот что я сделал, чтобы обойти этот вопрос. Я убедился, что каждый стол, который я хочу включить CDC, имеет LastModified колонка типа datetime. Отказ Затем я добавил ключ (с точки зрения EF), состоящий из LastModified колонна и то __$operation столбец. Я рисую это «наверное уникально» (что несколько пугается, но, вероятно, хорошо). Мои рассуждения в том, что LastModified точен около 3 мс, поэтому единственный раз, когда я (реально) получаю 2 строки в моем таблице CDC с тем же LastModified на обновлении; Но на обновлении эти два ряда будут иметь разные __$operation значения (A 3 и A 4). Таким образом, составляют составные составляющие, по меньшей мере, хоть смысла для ключа. Я не большой поклонник этого, и желаю, чтобы EF4 поддерживать таблицы без ключа. Если у кого-то есть предложение, пожалуйста, дайте мне знать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top