PDA

View Full Version : سوال: چگونگی نحوه صحیح استفاده از Data Annotation ها؟



mze666
پنج شنبه 19 مرداد 1391, 13:59 عصر
سلام - من توی پروژم با EF Code First کار میکنم و قسمت Data Access Layer رو جدا کردم. سوالی که دارم اینه که راه درست و اصولی برای استفاده از Data Annotation ها (که اغلب برای سفارشی کردن UI استفاده میشه) چی هستش؟

آیا باید این Data Annotation ها رو توی همون کلاسایی که توی Data Access Layer نوشتم بذارم؟

یا اینکه توی UI قسمت Models دوباره کلاس تعریف کنم و بعد با Auto Mapper به کلاس متناظر در Data Access Layer مپش کنم؟

amir-yeketaz
پنج شنبه 19 مرداد 1391, 15:28 عصر
آیا باید این Data Annotation ها رو توی همون کلاسایی که توی Data Access Layer نوشتم بذارم؟

بله ... اعتبارسنجی های پیش فرض را به صورت Attribute بالای پروپرتی ها استفاده کنید و اگرم خواستید که سفارشی بنویسید که من اینجا (http://barnamenevis.org/showthread.php?335604-Validation&p=1480871&viewfull=1#post1480871) توضیح دادم .


یا اینکه توی UI قسمت Models دوباره کلاس تعریف کنم و بعد با Auto Mapper به کلاس متناظر در Data Access Layer مپش کنم؟
این کارو وقتی میکنند که واقعا نیاز باشه! ... اینجاست که اصطلاحی به نام ViewModel به وجود میاد ... پس بیجهت map نکنید!

پیشنهاد میکنم این مقاله (http://dotnettips.info/Post/815/asp-net-mvc-11) را از بخش "مقابله با مشکل امنیتی Mass Assignment در حین کار با Model binders " مطالعه کنید.

موفق باشید ...

mze666
پنج شنبه 19 مرداد 1391, 15:35 عصر
ممنونم از پاسختون ولی اگر ممکنه این لینک قسمت نظراتش رو ببینید. من یه خورده گیج شدم که بالاخره درسته از همون مدل های EF استفاده کرد یا نه؟!

http://www.dotnettips.info/Post/954/observablecollection-%D8%AF%D8%B1-entity-framework

amir-yeketaz
پنج شنبه 19 مرداد 1391, 16:48 عصر
View شما باید Model مخصوص به خود را داشته باشد و این مدل الزاما با موجودیت‌های بانک اطلاعاتی شما یکی نیست.

"الزاما" نیست! ... ببینید گفتم بسته به نیازه (منظور از مخصوص به خود همینه!) ... اگر فکر میکنید که داخل یه فرمی کل اطلاعاتی (پروپرتی ها) که در Entity هست مورد نیاز نیست ازش یه ViewModel بسازید که فقط اطلاعات "لازم" رو شامل باشه!

ولی اگه میبینید که اطلاعات Entity همش برا کار لازمه که دیگه احتیاجی به ViewModel نیست!