5

いくつかの外部キー関係を持つテーブルのデータベースに新しい行を作成したいのですが、どの順序でどの呼び出しを行う必要があるかを把握できませんでした。これは私がこれまでに持っているものです:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() );
db.SaveChanges();

コードは 2 行目で失敗し、次のように述べています。

このリレート エンドに関連付けられたソース オブジェクトが追加、削除、または切り離された状態にある場合、アタッチは有効な操作ではありません。NoTracking マージ オプションを使用してロードされたオブジェクトは、常にデタッチされます。

何か案は?

4

3 に答える 3

8

(文法の修正をしてくれたジョンに感謝します)

だから私はそれを理解しました。これはあなたがしなければならないことです:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.Customer = (from c in db.Customer where c.Id == custId select c).First();
db.SaveChanges();

それが人々を助けることを願っています。

于 2008-10-13T14:51:45.187 に答える
6

エンティティ参照を使用しないのはなぜですか? あなたのメソッドは余分なSELECTステートメントを引き起こします。

より良い方法は、CustomerReferenceクラスとEntityKey.

order.CustomerReference = new System.Data.Objects.DataClasses.EntityReference<Customers>();
order.CustomerReference.EntityKey = new EntityKey("ModelsEntities.Customers", "Id", custId);
于 2008-12-15T16:12:15.390 に答える