PDA

View Full Version : تفاوت Metadata با Model



kahkeshane2012
سه شنبه 09 دی 1393, 13:27 عصر
با عرض سلام . خسته نباشید خدمت جامعه ی برنامه نویسان.
ما وقتی در Mvc میخایم با بانک ارتباط برقرار کنیم در قسمت Model با سه قسمت که با نام MetaData داریم و دیگری با نام Model مثلا BookModel & BookMetadata و یک جدول اصلی که همان Book ؛در قسمت متادیتا خصوصیات هر فیلد مشخص میشه برفرض اینکه مشخص میکنیم ادی کلید باشد یا اینکه فیلد توضیحات چندخطی باشد...... اما من نمیتونم درک کنم که چرا کلاس با همان خصوصیات تقریبا در BookModel ایجاد میکنیم ضرورت ایجاد و استفاده صحیح از این دو کلاس چیه؟؟؟
خواهشا به stackoverflow و سایت های .... ارجاع ندید ؛ با تشکر فراوان.

aroshanzamir
سه شنبه 09 دی 1393, 18:34 عصر
سلام دوست من :
Model :
به گفته آقای بهروز راد مدل شامل داده های است که کاربر با آن سرو کار دارد...این مدل می تواند کلاسی باشد که از آن با نام ViewModel یا DomainModel یاد می شود و از ViewModel برای انتقال ساده اطلاعات از View به Controller و عکس استفاده می شود و DomainModel کلاس های هستند که در آن منطق انجام کار قوانین تعین اعتبار داده و .... انجام می شود

MetaData ها توسط Attribute ها اعمال می شوند مثلا Required
که باعث می شود در زمان پر کردن فرم کاربر باید حتما این یک مقدار برای این Property که این Attribute به آن اعمال شده است وارد نمایید

در ضمن در کنترولر باید Valid بودن مدل را چک کنی

[Required]
[StringLength(30)] و .....


در فضای نامی :

System.ComponentModel.DataAnnotations


موفق باشی

kahkeshane2012
سه شنبه 09 دی 1393, 18:56 عصر
بسیار بسیار تشکر از توجه شما؛ اگر که دوستان تعاریف دیگری دارن و ارائه بدن ممنون میشم.
با سپاس فراوان.

RIG000
سه شنبه 09 دی 1393, 19:34 عصر
ما در book در Model هیچ metadata ای را اعمال نمیکنیم. و یک metadata ایجاد میکنیم که شامل attr ها است. بر این اساس بعد از generate کردنbook در MOdel دیگر مشکلی برای ازبین رفتن attr ها نیستیم زیرا نباید attr ها در book در model باشند.

kahkeshane2012
سه شنبه 09 دی 1393, 20:00 عصر
RIG000 (http://barnamenevis.org/member.php?142362-RIG000)
اگر امکانش هست دلیل علمی فرمایش تان هم ذکر کنید ممنونم میشم.
چون دنبال تفاوت عمده ی این دو هستم صرفا BookMetadata یا BookModel یک مثال بود. کلی عرض کردم.
ضمنا متوجه نشدم ینی شما بجای اینکه بیاید یه پوشه ایجاد کنید تا BookMetadata & UserMetadata & roleMetadata ......... در آن ذخیره کنید یک کلاس ایجاد میکنید و تمام Atribute ها را در آن ذخیره میکنید؟!؟!؟ پس خصوصیات ما کجا باشند ینی داخل مسیر اصلی پروژه ؟!؟! هر چه فیلم دیدم تا به الان همه داخل model تعریف کردن !!!!!!!
ممنونم.

RIG000
چهارشنبه 10 دی 1393, 16:07 عصر
model صرفا برای کشیدن اطلاعات و رابط بین برنامه و دیتابیس است. اگر dbfirst کار میکنید ؟ بعد از generate مجدد اگر atrr ها را در مدل اعمال کرده باشید با جنریت دوباره مدل ، کل attr ها پاک می شوند. پس بهتر است به ازای هر کلاسی که درمدل وجود دارند یه کلاس متا دیتا ایجاد کنید. بهترین و کاربردی ترین روش و تنها روش همین است. اون ویدیو ها هم شما می گید بخاطر این هست که نمونه ای از روند کار را نشون بده و generate دوباره رو انجام نمیده. اگه انجام بده کل اطلاعات می ره هوا. و شما مجبور میشید در آسمون ها به دنبال atrr هایی که ساختید بگردید و مطمنا" به هیچ چیزی هم نمی رسید. پس از اول همین متا دیتای خود رو ایجاد کنید.