Удалите автоматически созданный столбец GUID со страниц «Добавить запись» в веб-приложении с динамическими данными
-
19-08-2019 - |
Вопрос
У меня есть веб-приложение Dynamic Data Entities, которое использует базу данных с GUID в качестве первичных ключей для таблиц. Все поля GUID имеют значение по умолчанию, равное NEWID (), поэтому SQL Server сгенерирует новый GUID для любой записи. Однако на моем веб-сайте с динамическими данными на страницах вставки новых записей отображается поле GUID, и пользователь должен вводить данные. Как я могу предотвратить отображение поля?
Решение
Согласно MSDN :
" Вы можете скрыть первичный ключ, как и любой другой столбец, используя атрибут Scaffold и задав для его значения значение false. Поскольку автоматически сгенерированные ключи не распознаются, шаблоны страниц вставки по умолчанию не работают с EDM для таблиц с автоматическими первичными ключами, если только вы не создадите частичный класс для сущности и не примените атрибут Scaffold со значением false. & Quot; р>
Кроме того, кроме этого, предпочтительно использовать " 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 content " комментарий, который не работает ..
Используются Entity Framework 4.0 Visual Studio 10 и .NET Framework 4.0