Ошибки при обновление модели БД в проекте из существующей БД с dotConnect for PostgreSq 6.6.224

Обсуждение возникших проблем, предложений и ошибок PgDAC компонентов
Ответить
Ovsienko_Oleg
Сообщения: 3
Зарегистрирован: Пт 12 апр 2013 11:31

Ошибки при обновление модели БД в проекте из существующей БД с dotConnect for PostgreSq 6.6.224

Сообщение Ovsienko_Oleg » Пн 06 май 2013 14:21

Здравствуйте.
В нашем ASP.NET проекте для доступа к БД мы используем dotConnect for PostgreSql. После обновления до версии dotConnect for PostgreSql 6.6.224 при создании/обновлении модели из существующей БД появляется множество ошибок:
"EntityType '<TypeName>' has no key defined. Define the key for this EntityType" - для тех таблиц / представлений у которых не указан первичный ключ (в предыдущей версии dotConnect for PostgreSql все поля таких таблиц считались ключевыми)
и
"The Action Restrict on <TableName> is not recognized. Valid actions are: None, Cascade, and Restrict" - для таблиц у которых указано ограничение (внешний ключ):
CONSTRAINT
...
ON DELETE RESTRICT
ON UPDATE CASCADE
NOT DEFERRABLE,

В версии 6.4.164 обновление модели работало корректно.

Shalex
Devart Team
Сообщения: 19
Зарегистрирован: Пт 12 апр 2013 14:48

Re: Ошибки при обновление модели БД в проекте из существующей БД с dotConnect for PostgreSq 6.6.224

Сообщение Shalex » Ср 08 май 2013 16:07

Ovsienko_Oleg писал(а):"EntityType '' has no key defined. Define the key for this EntityType"
Поведение изменилось начиная с 6.4.179 версии dotConnect for PostgreSQL: http://www.devart.com/dotconnect/postgr ... story.html. Мы считаем новое поведение более правильным, так как задание EntityKey для всех колонок, в том числе и nullable колонок, в таблице, где нет primary key, чаще всего приводит к ошибкам. Ведь свойства, входящие в EntityKey, не могут быть nullable и, как следствие, с большой долей вероятности произойдёт ошибка при материализации. При получении сообщения об отсутствующим EntityKey вам следует задать его для нужных свойств вручную.

Сейчас существуют следующие правила построения Entity Key, исходя из наличия в таблице/представлении:
1. primary key
2. unique index
3. non-nullable columns
Если в таблице/представлении ничего из вышеперечисленного нет, то EntityKey не создается.
Ovsienko_Oleg писал(а):"The Action Restrict on is not recognized.
Мы устранили данную проблему. Сообщим Вам, когда соответствующий публичный билд dotConnect for PostgreSQL будет доступен для скачивания.

Ответить