سلام دوستان

می خواستم تغییرات یک ردیف در یک جدول از بانک اطلاعاتی را بصورت سفارشی و با توجه به نیاز خودم انجام بدم. آنچه که در اینترنت دیدم override کردن متد Savechangegs در کلاس Context بود. که با توجه به State یک Entity اقدام لازم را انجام میداد. روشی که خودم میخوام پیاده کنم به این صورت هستش:


  1. یک جدول با نام History جهت ثبت ایجاد کردم که شامل UserId, EntityFullName, ReferenceId, DataAsJson, State هستش.
  2. تمام جداول دارای ستون هایی جهت ثبت تاریخ CreateDate, UpdateDate و DeleteDate هستند.
  3. اگر یک ردیف توسط کاربر Delete شود فقط تیک گزینه IsDeleted فعال می شود و دیگر در دسترس نخواهد بود و مقدار DeleteDate نیز بروزرسانی خواهد شد. و در انتهای نام کاربر، نام کامل Entity و شماره ردیف و State در جدول History ثبت خواهد شد.
  4. اگر ردیف اضافه شود. مطابق روش Delete فعالیت کاربر ثبت خواهد شد.
  5. اگر یک ردیف ویرایش شود برنامه قبل از ذخیره اطلاعات جدید ابتدا اطلاعات قدیمی را بصورت Json در جدول History ذخیر خواهد کرد و سپس اقدام به بروزرسانی اطلاعات جدید خواهد کرد. هر زمان که تغییرات اطلاعات را بخوام بررسی کنم اطلاعت json را به کلاسی که در ستون EntityFullName ثبت شده تبدیل میکنم و نتیجه را برای کاربر ارسال میکنم که اگر تعداد دفعات تغییر یک ردیف زیاد باشه نتیجه را بصورت یک لیست ارسال میکنم.


دوستان اگر روشی برای کار با تاریخچه تغییرات میدونید راهنمایی کنید. از CDC موجود در SQL Server نمیخوام استفاده کنم.

تشکر