Ошибка EF4: Невозможно определить связь между двумя объектами, поскольку они присоединены к разным объектам ObjectContext. - PullRequest
4 голосов
/ 29 октября 2010

Привет У меня есть вопрос, который я использую для моего веб-сайта wscf в vs2010, который использует модель MVP (модель, представление, презентатор) и для моего уровня модели (слой доступа к данным), используя EF

что таблицы seguimiento являются промежуточной таблицей между таблицами be cliente и gventa поэтому у меня есть моя вставка в таблице seguimiento с L2E в моем (DAL LAYER), как это

public void InsertarSeguimiento(Seguimiento Seg)
    {
        using (var cont = new CelumarketingEntities())
        {
            cont.AddToSeguimiento(Seg);
            cont.SaveChanges();
        }
    }

и на уровне своей презентации я записываю для своей веб-формы из текстового поля поле для seguimiento. И я получаю эту ошибку, когда пытаюсь установить объектную клиентку (seguimiento) objProxy.ClienteReference.Value
Невозможно определить отношения между двумя объектами, поскольку они присоединены к разным объектам ObjectContext. и я не понимаю, почему, поскольку у объекта gventa нет этой ошибки

 protected void BtnInsertar_Click(object sender, EventArgs e)
        {
            string nombreGVentas = TbxVendedor.Text;
            char[] delimit = new char[] { ' ' };
            string[] arreglo = nombreGVentas.Split(delimit);
            GVenta IdGVentas = _presenter.getventas(arreglo[0], arreglo[1]);

            string nombrecliente = TbxCliente.Text;
            Project.CAD.Cliente  idCliente = _presenter.getCliente(nombrecliente);

            string hora = DdlHora.SelectedValue;
            string minutos = DdlMinutos.SelectedValue;

            string HorMin = hora + ":" + minutos;
            Project.CAD.Seguimiento objProxy = new Project.CAD.Seguimiento();

            objProxy.GVentaReference.Value = IdGVentas;
            objProxy.ClienteReference.Value = idCliente;   *// here i get the errors*
            objProxy.Descripccion = TbxDescripccion.Text;
            objProxy.Fecha = Calendar1.SelectedDate;
            objProxy.Hora = HorMin;

             _presenter.insertarseg(objProxy);   
        }

1 Ответ

5 голосов
/ 29 октября 2010

Проблема в том, что ваш idCliente уже привязан к контексту здесь:

Project.CAD.Cliente  idCliente = _presenter.getCliente(nombrecliente);

Итак, когда вы пытаетесь присвоить его другому объекту, который также находится в каком-то другом контексте (строка, где вы получаете ошибку), EF выдает ошибку, так как не знает, какой объект поместить в какой контекст может принадлежать только одному контексту).

Что вам нужно сделать, это отключить idCliente от его контекста, прежде чем вернуться в метод _presenter.getCliente().

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