1

現時点では、[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<object> 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);
                }
4

2 に答える 2

3

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

エンティティの古い値が必要な場合は、このメソッドが役立ちます

于 2012-02-06T12:56:59.060 に答える
0

以下のリンクを確認してください。

http://www.matthidinger.com/archive/2008/05/08/linq-to-sql-audit-trail.aspx

答えはhttp://social.msdn.microsoft.com/Forums/en/linqtosql/thread/4498dddb-6dc2-4676-ba0a-eeda1aa453b0にあります

于 2012-02-06T11:03:11.173 に答える