Entity Framework и DataNavigator - PullRequest
0 голосов
/ 15 мая 2011

Кто-нибудь сумел связать DataNavigator и DataGrid, используя свойство DataSource и ADO.NET Entity Framework, чтобы добавлять и удалять (кнопки + и - в навигаторе данных).Работа?У меня проблема в том, что каждый раз, когда я нажимаю кнопку «Добавить» в DataNavigator, EntityState всегда устанавливается на отдельное.Я не могу понять, как добавить эту отдельную сущность в DataContext.

мой код прост (с использованием статического класса сеанса и частичного класса):

internal class Session
{
    private static Entities _entities;

    public static Entities Entities
    {
        get { return _entities ?? (_entities = new Entities()); }
        set { _entities = value; }
    }
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        InitData();
    }

    private void InitData()
    {
        gridControl1.DataSource = Session.Entities.SomeObjects;
        dataNavigator1.DataSource = Session.Entities.SomeObjects;
    }
}

public partial class SomeObjects
{
    public SomeObjects()
    {
        PropertyChanged += SomeObject_PropertyChanged;
        ObjectId = Guid.NewGuid();
    }

    private void SomeObject_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
            Debug.WriteLine(EntityState); // when i change a existing record in the grid, EntityState is set to modified and can be saved easily using SaveChanges. But when i add a new entity, EntityState is always set to detached.
    }
}

Помощь приветствуется!

-Christian

1 Ответ

2 голосов
/ 15 мая 2011

Я думаю, что вы должны использовать BindingSource control вместо DataSource и обрабатывать AddingNew событие, чтобы вручную установить State на Added, вызывая AddObject.

DataGrid ничего не знаетоб источнике данных, поэтому он не может связываться с контекстом структуры объекта / устанавливать и добавлять объект.Вы должны сделать это вручную, и для этого вам нужно обработать событие при добавлении новой записи.Я считаю, что AddingNew и BindingSource - это путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...