sql >> Base de Datos >  >> RDS >> Sqlserver

Linq a SQL ForeignKeyReferenceAlreadyHasValueException

Bien, estás recibiendo este error,

http://msdn.microsoft.com/en -us/library/system.data.linq.foreignkeyreferenceyahasvalueexception.aspx

ForeignKeyReferenceYaHasValueException

Y el enlace dice esto al respecto,

Representa errores que ocurren cuando se intenta cambiar una clave externa cuando la entidad ya está cargada.

Creo que lo que debe hacer es cargar el Pedido del que está hablando, y tendrá una lista de Detalles del pedido asociado. Si desea eliminar una de esas referencias, debe eliminar OrderDetail de la lista OrderDetails.

Creo que necesitas hacer algo como esto,

using (DataClasses1DataContext context = new DataClasses1DataContext())
{
    Customer customer = context.Customers.Where(x => x.CustomerID == 1).Single();
    Order order = new Order();
    // set some order fields here
    customer.Orders.Add(order);

    OrderDetail orderDetail = new OrderDetail();
    order.OrderDetails.Add(orderDetail);

    orderDetail.Product = context.Products.Where(x => x.ProductID == 2).Single();
    orderDetail.ProductID = orderDetail.Product.ProductID;

    context.SubmitChanges();
}

Pruébelo sin InsertOnSubmit, pero aún mantenga los cambios de envío. Sugiero que debido a que ya está agregando el registro configurando esto,

order.OrderDetails.Add(orderDetail);

Así que probablemente no necesites insertarlo de nuevo.