Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нет поддержки "server-generated keys or values", Entity Framework и SQL Server CE 
:(
    Опции темы
Raistlin
Дата 9.8.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 19.5.2009

Репутация: нет
Всего: нет



Доброго времени суток.
Работаю с Entity Framework и SQL Server Compact Edition 3.5.
Обнаружил очень досадное ограничение:
Цитата
SQL Server Compact does not support entities with server-generated keys or values when it is used with the Entity Framework, although the Entity Framework allows you to define entity types with server-generated keys or values. Data manipulation operation on an entity that has server-generated values throws a "Not supported" exception.

В том числе, нельзя использовать автоинкрементацию первичного ключа на стороне БД, при вставке новой записи.

Набросал вот такой костыль:
Код
    public static class MyEntityIdManager
    {
        static MyEntityIdManager()
        {
            using (MyEntities context
                = new MyEntities())
            {
                ObjectQuery<MyEntity> query = context.MyEntity;

                if (query.Count() > 0)
                {
                    MyEntity lastEntity = context.MyEntity.ToList().Last<MyEntity>();

                    IdManager.Id = lastEntity.EntityID + 1;
                }
                else
                    IdManager.Id = 0;
            }
        }

        private static int _id;

        public static int Id
        {
            get 
            {
                ++_id;

                return IdManager._id; 
            }
            set { IdManager._id = value; }
        }
    }

Далее к MyEntity добавляется новый конструктор, не принимающий Id в параметрах, идентификатор задается в теле конструктора.
Хранение и автоинкрементация Id на стороне приложения даст возможность добавить несколько объектов, не вызывая каждый раз SaveChanges().

В связи с вышеперечисленным вопрос: Есть ли более красивое решение, как генерировать Id на стороне приложения с учетом специфики EF?


Это сообщение отредактировал(а) Raistlin - 9.8.2009, 16:13
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0377 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.