Как я могу использовать EF в окнах форм для вставки новых данных? - PullRequest
1 голос
/ 28 декабря 2010

Привет
Может быть, это простой вопрос, но я впервые использую приложение EF + win, так что ... Я создаю приложение Win с помощью EF, добавив edmx в качестве источника данных, затем перетащите таблицы, чтобы получить навигатор иисточник привязки .. когда я нажимаю кнопку добавления в навигаторе, это позволяет мне вводить новые данные, но когда я сохраняю контекст, я получаю данные NULL для всех полей, кроме поля автоматического увеличения (поле идентификатора) ....
Что я должен сделать, чтобы сохранить много записей ...?
ДОЛЖЕН ли я зацикливаться на всех сущностях в источнике привязки и добавлять их в контекст ??
Заранее спасибо

Обновление:
Я забыл сказать, что когда я использую сетку данных, он добавляет элементы правильно, но с "Подробно" это не ..

1 Ответ

1 голос
/ 28 декабря 2010

Я понял это ..
Проблема возникает, когда я перетаскиваю объект из источника данных как элемент управления «Сведения».
проблема заключалась в том, что нет никакой связи между контекстом и новым элементом в источнике привязки (который был создан нажатием кнопки «Добавить» в навигаторе) .. поэтому мы должны установить это соединение вручную, получив новую сущность и добавив ее в контекст каждый раз, когда мы добавляем новый элемент.
Наконец, мы должны завершить режим редактирования в источнике привязки и принять все изменения после сохранения изменений в контексте (принятие изменений позволит нам обновить новый элемент после его сохранения) .. и вот код:

    private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
    {
        MyEntity newEnt = new MyEntity();
        newEnt = (MyEntity)MyEntityBindingSource.Current;
        ctx.AddToAuthors(newEnt);
    }

    private void MyEntityBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        try
        {
            MyEntityBindingSource.EndEdit();
            ctx.SaveChanges();
            ctx.AcceptAllChanges();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }  

Надеюсь, это было полезно ..

...