LinqからSQLへ - 監査証跡(SubmitChangesの古い値を見つける)

現時点では、[context] .SubmitChanges()でエンティティの古い値を見つける方法を探しています。

私が言うことができる限り、新しい値だけが現れます。 エンティティの古い値を取得するには、実際にデータベースにクエリを実行する必要がありますか?

GertArnold による解決策:

    public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
                {
                   //Get the changeset
                    ChangeSet changeSet = this.GetChangeSet();

                   //Put the updated objects into a IEnumerable
                    IEnumerable updatedEntities = changeSet.Updates;

                    foreach (var entity in updatedEntities.Where(entity => AuditTypes.Contains(entity.GetType())))
                    {
                        var old = this.GetTable(entity.GetType()).GetModifiedMembers(entity);
                       //Do something with the old values
                    }

                   //Save the changes
                    base.SubmitChanges(failureMode);
                }



1
@WouterdeKort私は本当に投稿を見たが、キャッシュを取得する方法を述べていない。また、SubmitChangesを調べると、リフレッシュを呼び出さなくても新しい値が表示されます。
追加された 著者 Julian,
追加された 著者 Wouter de Kort,

2 答え

Table.GetModifiedMembersメソッドを探しているようです。

エンティティの古い値を必要とするので、このメソッドは便利です。

3
追加された
ありがとう、それは私が探していたものでした!
追加された 著者 Julian,
0
追加された
私はすでにGoogleのリンクを見つけましたが、ソリューションのために第三者のライブラリを使用することは望ましくありません。
追加された 著者 Julian,
第2のリンクは私にすべてのエンティティを変更させるでしょう。これは私がしたいことではありません。応答をありがとうが、私は本当に古い値を取得する方法が必要です。これが不可能な場合は、私もこれを知りたいと思います。
追加された 著者 Julian,