3

Когда я пытаюсь использовать эти две функции вместе, я получаю ошибку компиляции на моей модели (заметьте, я переименовал объект для моей таблицы _CT " ContentHistory»и мой SL4 Test Unit проект называется„DomainServices.UnitTest“:Entity Framework 4 и SQL Server 2008 R2 Смена данных не воспроизводится красиво вместе

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 играть хорошо вместе

+0

Хорошо, так вот как это ломается. В таблицах CDC в базе данных нет первичных ключей. В результате EF4 передает ключ. Это не правильный выбор. В этом отношении я не уверен, какой хороший выбор, поскольку двоичные (10) и varbinary (128) не являются допустимыми типами для ключевых столбцов в EF4. –

+0

Вы просто пытаетесь использовать EF для * чтения * таблиц CDC, правильно? –

+0

Да, это правильно. –

ответ

0

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

+0

Повторяю, мне не нравится этот ответ. Это то, что я делаю, чтобы «пройти». Если есть лучший ответ, кто-то, пожалуйста, звоните в :) –

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

  • Нет связанных вопросов^_^