Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Entity Framework + XtraGrid - add,delete, update  [new]
buban
Member

Откуда:
Сообщений: 2
Добрый день.
Не могу разобраться.
Сделал простейшую модель из одной таблички(ключ + 2 поля).

Считываю так
    classListBindingSource.DataSource = model.ClassListSet.ToList();


Табличка заполняется - все ок.

Дальше проблемы - ключ у SQL CE не генерируется, поэтому приходится в ручную.
(нашел в нете как реализовать)
            ClassList addNew = new ClassList
            {
                Id = model.ClassListSet.NextId(f => f.Id)
            };
            model.ClassListSet.Add(addNew);

1.Вопрос в том, что в табличку вставляется строка с ключом 0, а addNew создается с правильным ключом.
Почему так получается? Как рефрешить таблицу?
2.Как удалить текущую строку?
model.ClassListSet.Remove((ClassList)classListBindingSource.Current);

удаляет все что попало.
3. Как сохранить изменения в строках?
            classListBindingSource.EndEdit();
            model.SaveChanges();

Пытался так, но как-то странно сохраняет изменения.
2 апр 13, 17:24    [14127714]     Ответить | Цитировать Сообщить модератору
 Re: Entity Framework + XtraGrid - add,delete, update  [new]
StaffaKT
Member

Откуда:
Сообщений: 35
По первому вопросу, возможно проблема в

"При использовании с Entity Framework в SQL Server Compact 4.0 сущности с создаваемыми сервером ключами или значениями поддерживаются, только если ключ имеет тип столбцы идентификаторов."
http://msdn.microsoft.com/ru-ru/library/cc835494.aspx

Т.е. необходимо для поля ключа свойство StoreGeneratedPattern установить в Identity
4 апр 13, 15:07    [14136107]     Ответить | Цитировать Сообщить модератору
 Re: Entity Framework + XtraGrid - add,delete, update  [new]
buban
Member

Откуда:
Сообщений: 2
Спасибо.
В общем ступил.
Вместо
 classListBindingSource.DataSource = model.ClassListSet.ToList();

надо
classListBindingSource.DataSource = model.ClassListSet.Local.ToBindingList();

и тогда никакого гемора с добавлением и удаление и редактированием)
вот тут нашел пример
http://blogs.msdn.com/b/adonet/archive/2011/02/16/ef-feature-ctp5-code-first-and-winforms-databinding.aspx
6 апр 13, 21:43    [14145764]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить