ASP.net 操作ログ採取 TableAdapter拡張

○TableAdapterの基底クラスを作成

using System.ComponentModel;
using System.Data.SqlClient;
using System.Reflection;
using System.Web;

namespace Logic.dataset
{
    public class TableAdapterBase : Component
    {
        public SqlDataAdapter InnerAdapter
        {
            get
            {
                return (SqlDataAdapter)GetType().GetProperty("Adapter",
                  BindingFlags.NonPublic | BindingFlags.Instance).GetValue(this, null);
            }
        }
    }
}

○TableAdapterの基底クラスを変更

○イベントを設定

        public static void setTableAdapterUpdateLogEvent(Logic.dataset.TableAdapterBase ta)
        {
            ta.InnerAdapter.RowUpdated += new System.Data.SqlClient.SqlRowUpdatedEventHandler(Adapter_RowUpdated);
            //ta.InnerAdapter.RowUpdating += new System.Data.SqlClient.SqlRowUpdatingEventHandler(Adapter_RowUpdating);
        }

        private static void Adapter_RowUpdated(object sender, System.Data.SqlClient.SqlRowUpdatedEventArgs e)
        {
            putLog(e.Row);
        }

        //private static void Adapter_RowUpdating(object sender, System.Data.SqlClient.SqlRowUpdatingEventArgs e)
        //{
        //    putLog(e.Row);
        //}

※dt.Update()系は拾えるが、dt.Delete()系はダメ。Update()でDeleteしていたら拾える?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です