none
Первичный ключ типа GUID и EntityFramework RRS feed

  • Вопрос

  • Добрый день, друзья!

    Возник такой вопрос. Есть таблица в базе данных SQL Server. В таблице есть поле Id , которое является первичным ключом и имеет тип uniqueidentifer, то есть guid.

    Если генерировать guid на клиенте в C# коде и записывать его с помощью EntityFramework в БД, то нельзя гарантировать хоть какую то уникальность. А если использовать функцию newid() в самой СУБД для авто-генерации ключа, то нужно как то настроить EntityFramework чтобы не передавать guid. Но как настроить без ручной правки всех таблиц непонятно.

    Наверняка есть какое-нибудь тривиальное решение вопроса...



    8 апреля 2012 г. 11:52

Ответы

Все ответы

  • Проблема решена!

    Подробности здесь: http://leedumond.com/blog/using-a-guid-as-an-entitykey-in-entity-framework-4/ (Хотя уже вышел updete исправляющий баг)

    • Предложено в качестве ответа YatajgaModerator 8 апреля 2012 г. 12:51
    • Помечено в качестве ответа Abolmasov Dmitry 9 апреля 2012 г. 4:52
    8 апреля 2012 г. 12:45
  • Спасибо, что выложили решение проблемы. Оно будет полезно другим пользователям, столкнувшимся с подобным.


    Для связи [mail]

    9 апреля 2012 г. 4:52
  • Есть таблица в базе данных SQL Server.

    В таблице есть поле Id , которое является первичным ключом и имеет тип uniqueidentifer, то есть guid.

    использовать функцию newid()



    Очень плохая практика использовать гуид в качестве ПК (по умолчанию кластерный индекс) и уж тем более генерация значений с помощью newid().

    1. Вы для идентификатора выделяете 16 байт...на сколько это оправдано!?

    2. И самое печально получаете бешенную фрагментацию и падение производительности


    http://www.t-sql.ru

    14 апреля 2012 г. 5:20
    Модератор