sql >> データベース >  >> RDS >> Sqlserver

Linq から SQL への ForeignKeyReferenceAlreadyHasValueException

    OK、このエラーが発生しています。

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

    ForeignKeyReferenceAlreadyHasValueException

    そして、リンクはそれについてこれを言います、

    エンティティが既に読み込まれているときに外部キーを変更しようとしたときに発生するエラーを表します。

    あなたがする必要があるのは、あなたが話している Order をロードすることだと思います。それに関連付けられた OrderDetails のリストがあります。これらの参照の 1 つを削除したい場合は、OrderDetails リストから OrderDetail を削除する必要があります。

    このようなことをする必要があると思います

    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();
    }
      

    InsertOnSubmit なしで試してみてください。ただし、SubmitChanges は保持してください。これを設定して既にレコードを追加しているため、

    order.OrderDetails.Add(orderDetail);
      

    したがって、おそらく再度挿入する必要はありません。




    1. Oracleの複数のREPLACE関数

    2. Oraclesqlldrタイムスタンプ形式の頭痛の種

    3. MySQLJOINはNULLフィールドを返します

    4. BLOBフィールドPL/SQLから複数の値を読み取る