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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление данных, измененных в DataGridView 
:(
    Опции темы
Lamya
Дата 31.10.2012, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день.

Необходимо выполнить следующее: загрузить таблицу из БД в DataGridView, поработать с ней (добавление-обновление данных) и записать изменения обратно в БД.

Код

    class DBHelper
    {
        internal static DBDataContext wm = new DBDataContext ();

        internal static List<jpJurPerson> GetJurPersons()
        {
            return (from jp in wm.jpJurPersons
                    select jp).ToList();
        }
    }

    public partial class Form1 : Form
    {
        private List<jpJurPerson> list;
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1Click(object sender, EventArgs e)
        {
            list = DBHelper.GetJurPersons();
            bindingSource1.DataSource = list;
        }

        private void Button2Click(object sender, EventArgs e)
        {
            DBHelper.wm.SubmitChanges();
        }
    }


На форме лежит BindingSource, DataSource для которого - объект jpJurPerson (класс таблицы из dbml-файла) .
BindingSource, в свою очередь, является DataSource для DataGridView.

Проблема в следующем: данные из БД по нажатию Button1 получаются. Их можно редактировать, добавлять и т.д. Но при сохранении (Button2Click) в БД происходит только изменение существующих данных, новые строки не вставляются в целевую таблицу БД. Хотя список list их исправно содержит, т.е. binding List<jpJurPerson> и DataGridView работает. 

Не подскажете, как решить проблему? Возможно, не описанным способом, а другими средствами LINQ? Спасибо.

Это сообщение отредактировал(а) Lamya - 31.10.2012, 13:43
PM MAIL   Вверх
jonie
Дата 9.7.2013, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



это потому что вы добавляете данные в List<T>, но не привязываете их к linq2sql контексту
вариант "в лоб": перед вызовом SubmitChanges() пробегитесь по этому списку и посмотрите на значение первичного ключа ваших сущностей. Если оно равно default(тип_вашего_ключа), тогда вам надо привязать эту сущность к контексту, используя DBHelper.wm.JurPersons.InsertOnSubmit(list[i]);


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




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


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

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