Как сделать двухстороннюю привязку данных с помощью EF в winforms?

Я очень новичок в кодировании. Теперь я собираюсь рассказать вам о моей текущей ситуации и о том, куда я хочу пойти. Надеюсь, вы поможете.

Я использую первый подход к базе данных EF5.0 и хочу иметь возможность использовать gridviews для вывода и обновления значений базы данных.

В настоящее время я связываю свои данные следующим образом:

  pehlivan_kabametrajEntities ctx = new pehlivan_kabametrajEntities();
        var result = from k in ctx.Kolons
                     select k;
        dataGridView1.DataSource = result.ToList();

Этот код отлично отображает мои данные. Однако это неправильно или недостаточно для моих нужд. Потому что я хочу иметь возможность редактировать свои данные прямо в gridview. Подскажите пожалуйста что не так и что мне делать. По крайней мере, ссылки на некоторые документы, которые доставят меня в желаемую точку назначения, были бы замечательными. Спасибо.


person Hasan    schedule 04.10.2012    source источник
comment
С чем у вас проблемы? 1) После заполнения сетки можно редактировать данные на странице? или 2) Получение отредактированных данных со страницы и обратно в базу данных?   -  person Colin Pear    schedule 05.10.2012
comment
Оба на самом деле (:   -  person Hasan    schedule 05.10.2012


Ответы (1)


Если вы привязываетесь к результату запроса, вы используете только одностороннюю привязку данных. Вам нужно иметь IBindingList, чтобы получить двустороннюю привязку данных. Попробуй это:

 ctx.Kolons.Load();
 dataGridView1.DataSource = ctx.Kolons.Local.ToBindingList();

Если это не работает, попробуйте использовать BindingSource:

 ctx.Kolons.Load();
 gridBindingSource.DataSource = ctx.Kolons.Local.ToBindingList();
 dataGridView1.DataSource = gridSource; 
person Ladislav Mrnka    schedule 05.10.2012
comment
В нем говорится, что нет определения для .Load() или .ToBindingList(). Я использую VS2012, можно ли изменить этот метод? - person Hasan; 05.10.2012
comment
Я думал, что вы используете EF5, что означает API DbContext, но похоже, что вы используете только .NET 4.5 и старый API ObjectContext. - person Ladislav Mrnka; 05.10.2012
comment
На самом деле я не знаю, что я сделал. Я добавил модель данных объекта ADO.NET в свой проект, используя первый подход к базе данных, и он создал мой код. Думаю, мне нужно начать заново изучать эту тему. Можете ли вы предложить учебник или что-то, чтобы лучше изучить вещи? - person Hasan; 05.10.2012
comment
Ваш проект ориентирован на .NET 4.5? - person Ladislav Mrnka; 05.10.2012
comment
Да, он предназначен для .NET 4.5. - person Hasan; 05.10.2012
comment
Я понял, что могу использовать .load в своем файле класса, но не в кодах форм. - person Hasan; 08.10.2012
comment
@LadislavMrnka Почему вы используете context.Entity.Load и ... Local.ToBindingList ()? Я имею в виду, какова цель Local в этом случае? - person Prokurors; 28.09.2013
comment
@LadislavMrnka - есть ли способ использовать Local.ToBindingList() с производными классами? вот моя проблема ... вы можете помочь? stackoverflow.com/questions/18990553/ - person Prokurors; 28.09.2013