При подключении текущего источника привязки возникает ошибка: «На объектный объект нельзя ссылаться несколькими экземплярами IEntityChangeTracker» - PullRequest
0 голосов
/ 30 мая 2019

Я создал простую форму для редактирования списка клиентов, используя Entity Framework и привязку данных. Однако, когда я пытаюсь редактировать строки, возникает ошибка «На объект сущности нельзя ссылаться несколькими экземплярами IEntityChangeTracker». Я не знаю, где я прикрепляю один объект к двум контекстам данных ..

Основной пользовательский контроль:

    ArtGalleryEntities db;

    public UserControl5()
    {
        InitializeComponent();
    }

    private void UserControl5_Load(object sender, EventArgs e)
    {

        db = new ArtGalleryEntities();
        db.Configuration.LazyLoadingEnabled = false;
        klienciBindingSource.DataSource = db.Klienci.ToList();

    }

    private void edit_button_Click(object sender, EventArgs e)
    {
        if (klienciBindingSource.Current == null)
            return;
        using (AddEditForm frm = new AddEditForm(klienciBindingSource.Current as Klienci))
        {
            if (frm.ShowDialog() == DialogResult.OK)
            {
                klienciBindingSource.DataSource = db.Klienci.ToList();
            }
        }
    }

AddEditForm здесь:

    ArtGalleryEntities db;

    public AddEditForm(Klienci obj)
    {

        InitializeComponent();
        db = new ArtGalleryEntities();
        if (obj == null)
        {
            klienciBindingSource.DataSource = new Klienci();
            db.Klienci.Add(klienciBindingSource.Current as Klienci);

        }
        else
        {
            db.Entry(obj).State = System.Data.Entity.EntityState.Unchanged;
            klienciBindingSource.DataSource = obj;
            db.Klienci.Attach(klienciBindingSource.Current as Klienci); // here error occurs 

        }
    }

Я пробовал следующие замены для прикрепления:

    db.Entry(klienciBindingSource.Current as Klienci).State = System.Data.Entity.EntityState.Unchanged;
    db.Entry(klienciBindingSource.Current as Klienci).State = System.Data.Entity.EntityState.Modified;

Но у меня это не сработало

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