افزودن Metadata به کلاس های مدل در روش EF Database First

توجه: برای دسترسی به تمام محتویات این صفحه از جمله فیلم آموزشی و دانلود ضمیمه ها می بایست با استفاده از حساب کاربری خود به سایت وارد شده باشید. همچنین شما میبایست شماره تلفن همراه تان را از طریق صفحه پرونده کاربری تایید کرده باشید. صفحه مدیریت پرونده کاربری

اگر در ASP.NET MVC از روش Database First برای کار با دیتابیس تان استفاده کرده باشید قطعا با یک مشکل آزار دهنده روبرو شده اید:

پس از افزودن صفت های Metadata به کلاس های ساخته شده توسط EF ، پس از هر گونه تغییر در ترکیب مدل، تمام صفت ها پاک می شوند!

راهکار حل این مشکل استفاده از کلاس های Metadata Buddy Classes است. با استفاده از این کلاس ها می توان صفت ها را در یک کلاس جداگانه نگهداری کرد که در معرض خطر Overwrite شدن توسط بازسازی کلاس ها برای برخورداری از تغییرات مدل قرار نگیرند.

این کلاس ها با افزودن یک صفت به نام [MetadataType] به بالای کلاس های مدل انجام می شود. صفت فوق نیز در Namespace ای به نام System.ComponentModel.DataAnnotations قرار دارد. این Namespace هم باید در لیست using های هر کلاس مدل Import شود تا صفت فوق کار کند.

مشکل اینجاست که با هر بار بازسازی کلاس های مدل، صفت MetadataType و Namespace حاوی این صفت از درون کلاس های مدل پاک می شوند.

با تماشای این ویدئو می توانید یاد بگیرید چگونه با دستکاری کردن قالب های T4 مربوط به Entity Framework می توانید این مشکلات را حل کنید.

ASP.NET MVC 3 Metadata 1 Buddy Classes 1 T4 2 Template 2 Customization 2 Entity Framework 1 Database First 1