PDA

View Full Version : سوال: آیا بهتره در خود مدل دیتابیس رو محدود کنم و یا در ویو مدل؟



r4hgozar
شنبه 25 مرداد 1393, 12:20 عصر
سلام.
سوال من اینه که می خواستم بدونم بهتر اینه که در مدل دیتابیسم با code first دیتا بیس رو محدود کنم یعنی وقتی می خوام code رو بنویسم در خود مدل بهش بگم که خالی نباشه گارگتر هاش چند تا باشه و ......
و یا انکه مدل رو کاملا ساده بنویسم و در ویو مدل این کارا رو انجام بدم؟؟

alireza_rashvand
شنبه 25 مرداد 1393, 17:41 عصر
چیزی که به نظر می رسه اینکه شما باید در طراحی کلاس دیتابیس, این محدودیت ها رو اعمال کنید وگرنه هر بار در هر جا باید این موضوع رو چک(ذکر) کنید...

r4hgozar
شنبه 25 مرداد 1393, 19:11 عصر
خوب من دارم از یک ویو مدل استفاده می کنم.
می خواستم بدونم اگه این کار بکنیم و در خود model این محدودیت ها رو بدیم تاثیری در مصرف حافظه داره؟؟
یا تفاوتی نداره؟

hakim22
یک شنبه 26 مرداد 1393, 07:57 صبح
اصولا این مشکل وقتی پیش میاد که شما هم مدل داشته باشید و هم ViewModel

مسلما وقتی می خواهید ستون های دیتابیس را از نظر طول یا نوع مقادیری که ذخیره می کنند محدود کنید باید در مدل اینکار ها را انجام دهید. البته خیلی ها ترجیه میدهند که در خود DbContext و با تنظیمات Fluent API کارشان را پیش ببرند تا اینکه در مدل ها از Attribute ها استفاده کنند.

مثلا ایمیل در بانک اطلاعاتی یک Nchar با 50 یا 100 کاراکتر میشود که می توانید با StringLength آن را در مدل تنظیم کنید. اما در ViewModel به صورت datatype.email نشانگذاری میشود تا کاربر هنگام پر کردن فرم قواعد @ و .com یا حروف الفبای انگلیسی را به درستی وارد کند .

در مورد ViewModel استفاده از DataAnnotation ها در هر صورت الزامی هست وگرنه سنجش اصالت اطلاعات وارد شده به صورت دستی مشکل است.

اگر منظور شما حافظه بانک اطلاعاتی و هارددیسک است اگر در مدل تنظیمات مربوطه صورت نگیرد بانک رشد چشمگیری میکند. چون به صورت پیشفرض EF حداکثر فضا را به ستوها اختصاص میدهد و این بعدا در بازیابی و مدیریت اطلاعات هم زمانبر است.