Удалите автоматически созданный столбец GUID со страниц «Добавить запись» в веб-приложении с динамическими данными - PullRequest
3 голосов
/ 18 января 2009

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

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

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

После этого, который я сделал, вы можете вставить 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

3 голосов
/ 18 января 2009

Согласно MSDN :

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

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

...