Entity Framework 4 и SQL Server 2008 R2 Изменения захвата данных не играют хорошо вместе - PullRequest
3 голосов
/ 15 сентября 2010

Когда я пытаюсь использовать эти две функции вместе, я получаю ошибку компиляции в моей модели (обратите внимание, я переименовал сущность для моей таблицы _CT "ContentHistory", и мой проект модульного тестирования SL4 называется "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, чтобы хорошо играть вместе?

1 Ответ

0 голосов
/ 17 сентября 2010

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

...