嗨我有一个问题我在vs2010中使用我的网站wscf使用de model MVP(模型,视图,演示者)和我的模型层(数据访问层)iam使用EF
seguimiento的表是cliente和gventa表之间的中间表 所以我在seguimiento的表中插入了我的(DAL LAYER)中的L2E,就像这样
public void InsertarSeguimiento(Seguimiento Seg)
{
using (var cont = new CelumarketingEntities())
{
cont.AddToSeguimiento(Seg);
cont.SaveChanges();
}
}
在我的演示文稿's图层中,我捕获了我的网页表单,从文本框中搜索seguimiento的字段当我尝试将对象cliente放到(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);
}
答案 0 :(得分:5)
问题是您的idCliente已经附加到上下文中:
Project.CAD.Cliente idCliente = _presenter.getCliente(nombrecliente);
因此,当您尝试将其分配给另一个也在其他上下文中的对象(您收到错误的行)时,EF会抛出错误,因为它不知道要放在什么上下文中的对象(它只能属于一个上下文。)
您需要做的是在返回_presenter.getCliente()
方法之前从其上下文中分离idCliente。