استفاده از الگوی Unit of work و Repository در برنامه نویسی ویندوز
با سلام.
یه برنامه ویندوزی نوشتم که در این برنامه از الگوی Ripository , Unit of work استفاده کردم.
برنامه به درستی کار میکنه اما یک مشکلی هست که اونم این هست که در زمان حذف و اضافه و ویرایش لیست داده ها بعد از انجام این عملیات به روز نمیشه و باید اون فرم مجدد لود بشه.
میخواستم ببینم آیا استفاده از این الگو مذکور در برنامه ویندوزی اشتباهه یا اینکه من کد نویسی من ایرادی داره.البته برنامه هیچ مشکلی نداره و حذف ،اضافه و ویرایش به درستی کار میکنند و فقط ایراد همین موردی هست که گفتم که اون هم با لود مجدد حل شده.
اما این کار به نظرم زیاد جالب به نظر نمیاد.
در این برنامه از مدل Code first استفاده و با efCore 3.1 نوشته شده است.
میتوانید نمونه ساده پروژه رو از لینک زیر دانلود و چک کنید.
https://www.dropbox.com/s/lh39ren053bz7pq/mySchool%20.rar?dl=1
پاسخ هوش مصنوعی
مشکل شما به نظر می رسد که به دلیل عدم بروزرسانی داده ها در رابط کاربری است. زمانی که شما از الگوی Repository و Unit of Work استفاده می کنید، در واقع تغییرات داده ها در پایگاه داده به درستی انجام می گیرد، اما به روز رسانی رابط کاربری پس از انجام این عملیات به طور خودکار صورت نمی گیرد.
برای حل این مشکل، شما می توانید از روش های زیر استفاده کنید:
- استفاده از Binding Data: اطمینان حاصل کنید که فرم شما به درستی به منبع داده ها متصل است و پس از تغییرات، منبع داده ها به روز می شود.
- اعمال Refresh بر روی داده ها: پس از انجام عملیات حذف، اضافه یا ویرایش، داده های منبع را دوباره بارگذاری کنید و آن را به کنترل های کاربری (مانند DataGridView) متصل کنید.
به عنوان مثال، می توانید از متد زیر برای بارگذاری مجدد داده ها استفاده کنید:
private void LoadData()
{
using (var unitOfWork = new UnitOfWork())
{
var data = unitOfWork.Repository().GetAll().ToList();
myDataGridView.DataSource = data;
}
}
این متد را بعد از هر عملیاتی که تغییرات را بر روی داده ها اعمال می کند صدا بزنید تا داده ها به روزرسانی شوند.
اگر همچنان مشکل داشتید، می توانید از رویدادهای مربوط به تغییر در داده ها یا BindingSource برای مدیریت بهتر بروزرسانی ها استفاده کنید.
نکته اول اینکه شما می تونید مفهوم الگوی Unit Of Work رو در لینک زیر دقیقا مطالعه کنید.
دقت کنید شما هیچ گونه کد، سورس، تصویر و یا هیچ اطلاعاتی در مورد روش کار خودتون و پروژه خودتون ارائه نکردید و قطعا کسی که بخواد پاسخ بده نمیتونه شما رو راهنمایی کنه و به کلیات باید بسنده کنه. اینکه شما می فرمایید بعد از ثبت اطلاعات باید حتما فرم رفرش بشه قاعدتا نباید ارتباطی با این الگو داشته باشه.
الگوی UOW یک الگوی کلی هست و ارتباطی با برنامه نویسی ویندوز و یا وب نداره. شما در هر نوع پروژه ای می تونید استفاده کنید. اصولا از الگوها و یا معماری ها در برنامه نویسی های Design Pattern استفاده میشه. در این مدل برنامه نویسی در اکثر موارد از روش Code First استفاده میشه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول