Поддержка значений столбцов по умолчанию в пользовательском провайдере Entity Framework - PullRequest
2 голосов
/ 04 апреля 2011

Я работаю над провайдером пользовательской структуры сущностей, и мне нужно добавить поддержку значений столбцов по умолчанию для этого провайдера. Когда пользователь использует мастер структуры сущностей и выбирает таблицу со столбцами со значениями по умолчанию, эти значения по умолчанию не заполняются в конструкторе сущностей.

Я немного растерялся, где именно это население должно происходить. Я считаю, что подходящее место будет в переопределении метода GetEdmType для DbXmlEnabledProviderManifest, но я просто не вижу, как установить значение по умолчанию, если это правильное место.

Кто-нибудь имеет опыт написания EF-провайдеров, которые поддерживают значения по умолчанию для столбцов таблицы? Как вы реализуете это?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2013

Я немного опоздал на вечеринку, но DbXmlEnabledProviderManifest не подходящее место для добавления значений по умолчанию.Манифест поставщика описывает возможности самого механизма базы данных и является специфическим (и общим) для этого механизма базы данных, а не для конкретной базы данных и / или таблицы.Значение по умолчанию в манифесте провайдера указывает EF, какое значение использовать для данного столбца свойство , если оно не предоставлено пользователем (например, если пользователь пользователя не указывает масштаб или точность для десятичного столбца, значениеМанифест из провайдера будет использоваться для масштаба и / или точности, используемых для этого столбца).Если вы хотите просто вставить значение по умолчанию для свойства, самый простой способ - установить для свойства, соответствующего столбцу вашей сущности, это значение в конструкторе.Таким образом, пользователь всегда может установить для него другое значение, но если он не установит значение по умолчанию, оно будет отправлено в базу данных.Для некоторых сценариев угловых случаев, когда некоторые столбцы в базе данных не имеют соответствующих свойств для сущностей, вы можете использовать атрибут DefaultValue для элемента Property в SSDL, который будет вставлен в базу данных при добавлении строки.Это особенно полезно, если эти свойства не имеют значения NULL, поскольку, не сообщая EF, какое значение следует вставить, EF попытается вставить NULL, что, очевидно, приведет к сбою в столбцах, не допускающих NULL.

0 голосов
/ 04 апреля 2011

Мне не приходилось работать со значениями по умолчанию в EF, но я сталкивался с this для предыдущего поста Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...