質問

エンティティを1つのコンテキストから切り離し、それを変更し、新しいコンテキストを作成し、それを添付し、セッション間に変更された変更を持続させるテストを試みています。私はこれを適切に機能させることができないようです。私はDetectChangesを呼び出し、CORRENTVALUESを呼び出してみました。以下は私がこれまでに持っているものです。これらはポコではなく、私はそれらをそのように扱いたくありません。エンティティを切り離し、それを変更し、再び渡すことができるようにしたいだけです。ありがとう!

OCConsumer consumer;

using (var ctx1 = new CMSStagingContext())
{
    consumer = (from c in ctx1.OCConsumers
            select c).FirstOrDefault();

    Console.WriteLine("Retrieved {0} - {1} {2}",
        consumer.CustomerId, consumer.FirstName, consumer.LastName);

    ctx1.Detach(consumer);
}

consumer.BirthDate = "10/22/1981";

using (var ctx2 = new CMSStagingContext())
{
    ctx2.Attach(consumer);
    ctx2.ApplyCurrentValues("OCConsumers", consumer);
    ctx2.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave | System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);
}
役に立ちましたか?

解決

あなたの例を見ることから、マッピングプラグインはそれを期待するとおりに動作しています。コレクションのfromJSを呼び出すと、マッピングプラグインを効果的に言うと、これはそのコレクションの新しい内容です。例えば:

2行目、あなたが更新していたか、単にIDを削除したかどうかを知ることができます:2?

私は、データを単に更新として扱う適切な方法についての言及は見つかりませんが、1つを追加できます。マッピングされたアレイには、特定の項目が見つかるのを助けるためにmappedIndexOfなどの役立つメソッドがいくつかあります。更新データ・セットを表示するだけでは、単にループをループするだけで、その特定の項目へのマッピング.fromjs呼び出しでアイテムを見つけてアップデートしてください。これは簡単に再利用可能な方法に一般化することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top