PDA

View Full Version : استفاده از attribute ها و فیلتر ها بر روی کلاس های پایگاه داده که با دیتابیس فیرست درست شده است



andaron
یک شنبه 26 آذر 1391, 20:09 عصر
با سلام

من دیتابیس را به روش database first به وب سایتم متصل کردم حال می خواهم بر روی جداول از attribute ها و فیلتر ها استفاده کنم ولی چون در این روش اصلان کلاسی وجود ندارد در کتاب آموزشی که دارم مبحثی با عنوان "اعمال metadata به بک کلاس buddy " وجود دارد ولی متا دیتا مورد نظر اصلا وجود ندارد "[metadatatype(typeof(نام جدول)(]"
حال باید چه کار کنم

mze666
یک شنبه 26 آذر 1391, 20:45 عصر
[MetadataType(typeof(CategoryMetadata))]
public partial class Category
{
public class CategoryMetadata
{
[ScaffoldColumn(false)]
public int ID { get; set; }

[Required(ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "Required")]
[Display(Name = "Name", ResourceType = typeof(SR.CategoryResource))]
[DataType(DataType.Text, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "InvalidData")]
[StringLength(100, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "StringLenght")]
public string Name { get; set; }

[Required(ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "Required")]
[Display(Name = "Description", ResourceType = typeof(SR.CategoryResource))]
[DataType(DataType.MultilineText, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "InvalidData")]
[StringLength(500, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "StringLenght")]
public string Description { get; set; }
}
}

مهدی هادیان2
دوشنبه 27 آذر 1391, 09:25 صبح
بسم الله الرحمن الرحیم
با سلام
امیدوارم منظور دوستمونmze666 (http://barnamenevis.org/member.php?134519-mze666) رو متوجه شده باشید.
مدلتون یک کلاس هم برای desiner.cs دارد، در کلاس مربوطه هر تغییری که بخواهید میتوانید بدهید.
موفق باشید.

مهدی هادیان2
دوشنبه 27 آذر 1391, 09:29 صبح
بسم الله الرحمن الرحیم
با سلام


[MetadataType(typeof(CategoryMetadata))]
public partial class Category
{
public class CategoryMetadata
{
[ScaffoldColumn(false)]
public int ID { get; set; }

[Required(ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "Required")]
[Display(Name = "Name", ResourceType = typeof(SR.CategoryResource))]
[DataType(DataType.Text, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "InvalidData")]
[StringLength(100, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "StringLenght")]
public string Name { get; set; }

[Required(ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "Required")]
[Display(Name = "Description", ResourceType = typeof(SR.CategoryResource))]
[DataType(DataType.MultilineText, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "InvalidData")]
[StringLength(500, ErrorMessageResourceType = typeof(SR.ValidationMsg), ErrorMessageResourceName = "StringLenght")]
public string Description { get; set; }
}
}

لطفا راجع به SR که در این جا استفاده کردید؛ توضیح بدید.
با سپاس

mze666
دوشنبه 27 آذر 1391, 11:29 صبح
بله این قطعه کد رو از یکی از پروژه هام کپی پیست کردم و یادم رفت قسمت های اضافی (که مربوط به سوال دوستمون نمیشه) رو حذف کنم.
من در اکثر پروژه هام یک پروژه Class Library جدا درست می کنم (اینجا اسمش رو SR گذاشتم) و ریسورس ها (فایل های .resx) رو داخل اون قرار میدم. در حقیقت SR در اینجا namespace هستش.

مهدی هادیان2
دوشنبه 27 آذر 1391, 15:15 عصر
بسم الله الرحمن الرحیم
با سلام

بله این قطعه کد رو از یکی از پروژه هام کپی پیست کردم و یادم رفت قسمت های اضافی (که مربوط به سوال دوستمون نمیشه) رو حذف کنم.
من در اکثر پروژه هام یک پروژه Class Library جدا درست می کنم (اینجا اسمش رو SR گذاشتم) و ریسورس ها (فایل های .resx) رو داخل اون قرار میدم. در حقیقت SR در اینجا namespace هستش.
ممنون از پاسختون
راستی میدونید برای اینکه محدودیت برای نوع فیلدها مثلا int بگذاریم باید چی کار کنیم؟ که اگه کاربر اون نوع رو وارد نکرد پیغام خطای مربوطه رو ببینه.
با سپاس

mze666
دوشنبه 27 آذر 1391, 19:34 عصر
خواهش می کنم.
خود MVC یادم نیست همچین قابلیتی رو داشت یا نه. فکر کنم DataType("Integer") بود. یا شایدم با Range Attribute. ولی اصلاً درست یادم نمیاد.
در هر حال این لینک (http://dataannotationsextensions.org) چیزی که می خواید رو داره + چندتا Attribute مفید دیگه.

مهدی هادیان2
سه شنبه 28 آذر 1391, 13:48 عصر
بسم الله الرحمن الرحیم
با سلام
لینکی که فرموده بودید دیدم؛ از یه خاصیت به نام [Integer] استفاده کرده بود ولی جزء DataAnnotationهای موجود نبود.
با سپاس