سلام
نوشته شده توسط:
naser_feb8646
من میخوام هر بار که تغییری روی جدولم انجام شد یه نوتیفیکیش به کاربر نمایش بدم اگر براتون ممکنه راهنمایی بفرمایید
اگر میخواهید بعد از Save ها به کاربر اطلاع رسانی کنید که عملیات موفق بوده یا خطا خورده که این باید در هر Save متدی فراخوانی شود.
اگر کل برنامه یک exe واحد است، میتوانید یک مکانیزم ساده رویداد گرایی داشته باشید که هر کدی که داده ها را تغییر میدهد ، تابع خاصی را هم Raise کند که در نهایت منجر به نمایش پیام شود.
try
{
...
ef.SaveChanges();
objNotification.RaiseChange(true ); //OK
}
catch
{
objNotification.RaiseChange(true ); //Error
}
و در کلاس-شیء objNotification کدهای لازم جهت نمایش را قرار میدهید.
حتی میتوانید کل فرآیند فوق را در قالب یک متد یا کلاس کپسوله کنید
( مثلا ef.SaveAndNotify() ) که کد آن ، بستگی به ORM و معماری های پایه استفاده شده تان
( مانند DI ) دارد.
-- -- -- -- -- -- -- -- -- -- -- -- -- --
(
در همین راستا و در سطح معماری نرم افزار میتوان از معماری Observable هم استفاده کرد ، ولی حدس میزنم برایتان مشکل است
Microsoft Docs
Observer-Pattern
Observer-Pattern
) -- -- -- -- -- -- -- -- -- -- -- -- -- --
برای ارتباط با SQLServer یک کلاس جداگانه به نام SqlServerDependency هم وجود دارد که میتواند تغییرات یک جدول را رسد کند و به ما اعلان کند
ولی این مکانیزم را بیشتر برای برنامه های تحت شبکه و Multi-Process پیشنهاد میکنم
بطور نمونه در شرایطی که نسخه های متعددی از برنامه شما در سطح شبکه و بطور همزمان در حال اجرا است و شما اطلاعاتی را در RAM خوانده و Cache کرده اید تا هربار از دیتابیس نخوانید
با مکانیزم SqlServerDependency میتوانید از تغییر اطلاعات توسط سایر کاربران در نقاط دیگر شبکه مطلع شوید و Cache خود را Dirty یا Refresh کنید
که قبل تر مثالش را در تاپیک زیر مشاهده کرده بودید
SqlServerDependency
البته میتوان برای Notification شما هم استفاده کرد ولی مطمئن نیستم Notification را برای چه میخواهید و شاید این بکارتان نیاید.