2009-08-06 11 views
2

私はEntity Frameworkを初めて使用しています。現在、これを試しています。私は単純なデータベースを作成し、VS2008でモデルをセットアップし、EFを使用してデータベースにクエリを行い、新しいデータを挿入するコードを得ました。エンティティフレームワークと一時オブジェクト

しかし私は少し混乱している一つのことがあります。私は顧客と呼ばれるエンティティ(私のモデルでセットアップされている)を持っていて、私のアプリケーションのロジックの一部として、いくつかの中間処理のために一時的なCustomerオブジェクトを作成できるようにしたいと考えています。この特定のオブジェクトは、実際にはデータベースに格納されるべきではありません。しかし、SaveChanges()を呼び出すとすぐに、顧客はデータベースに保存されていることに気付きました。これは私が起こりたいことではありません。私はオブジェクトにAddCustomer()を呼び出すことがとてもうれしいですdo私は自分自身のために一時的なインスタンスを作成するオプションを持ってほしいです。

私は(デタッチを呼び出す)と持続されることから、それを止めることになる、私の一時的なインスタンスに渡すことができます発見しました。しかし、これは一時的なCustomerオブジェクトに関連するオブジェクトがあるため、これを実行する最善の方法であるかどうかはわかりません。

それは私がEFが動作するようになっている方法について何かを誤解だ、または私は何かを明らかに欠けている可能性があります - 私は誰かがまっすぐに私を設定することができます願っています!

おかげ

ジョン

+0

を呼び出す*バンプ*私はこの正確な同じ質問を持っているために非常に多くの –

答えて

0

あなたは再びEFに接続されることは決してないだろう。エンティティの一時的なインスタンスを持つようにしたい場合は、あなたがいる場合は、エンティティ

をクローニングするため、このEntity Clonerを使用エンティティの接続を切断しようとしています(サービス上でクライアントに渡して変更してからもう一度やり直してください)。そして、変更を再度EF-rightにマージします。これは直接サポートされていません。同じフィールドを持つ別の顧客のクラスを持っていないのはなぜどのようにこれまでに、あなたはこれらのソリューション

Entity Bag:

EFContrib (you need PostSharp4EF)

+0

感謝をそれ。私は実際にそれらを複製するのではなく、まったく新しいオブジェクトを作成しています。理想的にはそれができるようにしたいものです カスタマーcust = new Customer();私は特に entities.AddToCustomer(カスト)言っていない限り、これまでEFに置かれていることのない 。 これらのリンクが私にこのようなことをさせることができるとは思っていませんか? – John

0

を試すことができますか?

+0

それは可能ですが、一時的なオブジェクトの1つを保持する必要がある場合は、そのオブジェクトをEFオブジェクトに変換する必要があります。また、私が操作している顧客(注文など)の子オブジェクトがあると、これはかなり荒れ果てます。今は、顧客、注文、住所などのメモリ内バージョンとEFバージョンがあります。 それは確かに問題を回避する方法だ - しかし、それは多くの作業のように思える、とEFはすでに私のために、これらのクラスを構成したことを考えると、不必要な多くの作業! しかし、提案をありがとう。 – John

0

ちょうどEF4を使用してサービスしてこの問題に自分自身を走った - 簡単な解決策があります - あなたは新しいエンティティインスタンスを作成した後、

objectContext.Detach(newEntity); 
関連する問題