Здравствуйте.
В нашем 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 обновление модели работало корректно.
Ошибки при обновление модели БД в проекте из существующей БД с dotConnect for PostgreSq 6.6.224
-
- Сообщения: 3
- Зарегистрирован: Пт 12 апр 2013 11:31
Re: Ошибки при обновление модели БД в проекте из существующей БД с dotConnect for PostgreSq 6.6.224
Поведение изменилось начиная с 6.4.179 версии dotConnect for PostgreSQL: http://www.devart.com/dotconnect/postgr ... story.html. Мы считаем новое поведение более правильным, так как задание EntityKey для всех колонок, в том числе и nullable колонок, в таблице, где нет primary key, чаще всего приводит к ошибкам. Ведь свойства, входящие в EntityKey, не могут быть nullable и, как следствие, с большой долей вероятности произойдёт ошибка при материализации. При получении сообщения об отсутствующим EntityKey вам следует задать его для нужных свойств вручную.Ovsienko_Oleg писал(а):"EntityType '' has no key defined. Define the key for this EntityType"
Сейчас существуют следующие правила построения Entity Key, исходя из наличия в таблице/представлении:
1. primary key
2. unique index
3. non-nullable columns
Если в таблице/представлении ничего из вышеперечисленного нет, то EntityKey не создается.
Мы устранили данную проблему. Сообщим Вам, когда соответствующий публичный билд dotConnect for PostgreSQL будет доступен для скачивания.Ovsienko_Oleg писал(а):"The Action Restrict on is not recognized.