Удалите автоматически созданный столбец GUID со страниц "Добавить запись" в веб-приложении с динамическими данными

У меня есть веб-приложение Dynamic Data Entities, которое использует базу данных с GUID в качестве первичных ключей для таблиц. Все поля GUID имеют значение по умолчанию, равное NEWID(), поэтому SQL Server сгенерирует новый GUID для любой записи. Однако на моем веб-сайте с динамическими данными на страницах вставки новых записей отображается поле GUID, и пользователь должен вводить данные. Как я могу предотвратить отображение поля?

2 ответа

Решение

По данным MSDN:

"Вы можете скрыть первичный ключ, как и любой другой столбец, используя атрибут Scaffold и задав для него значение false. Поскольку автоматически генерируемые ключи не распознаются, шаблоны страниц" Вставка "по умолчанию не работают с EDM для таблиц с автоматическими первичными ключами. если вы не создадите частичный класс для сущности и не примените атрибут Scaffold со значением false."

Кроме того, кроме этого, предпочтительно использовать "newsequentialid()" для значения по умолчанию Guid, если вы используете SQL Server 2005 или более позднюю версию, так как он более эффективен для вставки.

Не правильный ответ..

После этого, который я сделал, вы можете вставить 1 запись, которая получит GUID со всеми нулями. После этого вы вообще не получите сообщения об ошибке, но больше не сможете вставлять записи из-за уникального ограничения индекса на guid (который, конечно, является первичным ключом).

Чтобы действительно решить эту проблему, вы должны отредактировать файл emdx и добавить

StoreGeneratedPattern="Identity"

в свой тег свойства Guid под комментарием "SSDL-контент". Пример:

   <Property Name="Guid" Type="uniqueidentifier" Nullable="false" StoreGeneratedPattern="Identity"/>

Если вы сделаете это в дизайнере Visual Studio, он будет комментировать тег свойства под комментарием "CSDL-контент", который не работает.

Используются Entity Framework 4.0 Visual Studio 10 и.NET Framework 4.0

Другие вопросы по тегам