2

アプリケーションをカスタムORMから.Net4を使用してEntityFrameworkに変換しています。状況は順調に進んでいますが、子アイテムを別の親に移動する方法がわかりません。どのパターンに従うべきかわかりません。

ORMを使用して、次のようなメソッドを生成しました。

public void MoveTo_Item(Parent.Row destination)
{
    _inMovement = true;
    _parent_Item.Child_Items.Remove(this);
    parent_id = destination.id;
    destination.Child_Items.Add(this);
    _inMovement = false;
}

どこ:

  • _inMovement == true_parent_Item.Child_Items.Remove/Add(this) DBでの削除/挿入のトリガーを防止しました。と
  • parent_id = destination.idDBで更新をトリガーしました。

parent1.Remove(item)子アイテム自体には子アイテムがあるので、その後に。を続けることができるとは思わないでくださいparent2.Add(item)

EF .Net 4で親アイテムを適切に変更するにはどうすればよいですか?

4

2 に答える 2

0

EFでは、ナビゲーションプロパティが正しく設定されていれば、それは単に問題になります(ここでは明らかに名前を作成します)

Child child = sourceParent.Children.First();  // or whatever

child.ParentObject = destinationParent;

ところで、オブジェクトが操作されるたびにカスタムORMがデータベースにヒットした場合(これはかなりのリソースを消費するはずですよね?)、データベースがヒットしないEFの動作方法に調整する必要があります。あなたが明示的にそう言わない限り。

于 2012-06-11T14:19:24.097 に答える
0

以下は、自己追跡エンティティのソリューションです。

ObjectSet.Detach(YourObject)1つのオブジェクトセットからオブジェクトをデタッチするために使用します。

アタッチメントには2つの機能があります。AttachオブジェクトがDBからロードされ、EFがそのオブジェクトにUpdateステートメントを使用することが予想される場合に使用する必要があります。Attachデタッチされたエンティティに使用する必要のある関数です。

AddObjectアプリケーションでエンティティを作成したばかりで、まだDB(Insert使用するステートメント)にない場合に使用する必要があります。

詳細については、 MSDNを参照してください。

于 2012-06-11T14:51:27.833 に答える