PDA

View Full Version : استفاده از database frist و یه مشکل با کلاس های ایجاد شدش در هنگام update model



RIG000
شنبه 19 مهر 1393, 23:45 عصر
سلام. من از dbfirst استفاده میکنم. گاهی فیلد های جدولم رو تو دی بی تغییر میدم . حالا میام تو updatemodel میکنم تا وارد شه . اما یه مشکلی هست که من اگه validation رو پروپرتی هام داشته باشم
مثل

public int PersonId { get; set; }
[Required(ErrorMessage = "نام کاربری را وارد کنید")]
public string PersonUserName { get; set; }
[Required(ErrorMessage = "پسورد را وارد کنید")]
[DataType(DataType.Password)]
public string PersonPassword { get; set; }
public string PersonDate { get; set; }
[Required(ErrorMessage = "ایمیل را وارد کنید")]
//[DataType(DataType.EmailAddress)]
//[RegularExpression(@"[A-Za-z0-9._%+-]+[A-Za-z0-9.-]+\.[A-Za-z] {2,4}", ErrorMessage = "ایمیل را درست وارد کنید")]
[RegularExpression(@"^([0-9a-zA-Z]([\+\-_\.][0-9a-zA-Z]+)*)+@(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z0-9]{2,3})$", ErrorMessage = "ایمیل را درست وارد کنید")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Required(ErrorMessage = "موبایل را وارد کنید")]
[MinLength(10, ErrorMessage = "تعداد کاراکتر کمتر از حد مجاز است")]
[MaxLength(10, ErrorMessage = "تعداد کاراکتر بیشتر از حد مجاز است")]
[RegularExpression(@"^(?:0)?9\d{9,}$", ErrorMessage = "لطفا یک موبایل معتبر وارد کنید")]
public string Mobile { get; set; }
public virtual ICollection<Message> Messages { get; set; }
public virtual ICollection<ProductSale> ProductSales { get; set; }ب
بعد update کل اینا پاک میشه .
یک راه رو میدونم میشه بجا اینا رفت جی کوری کار کرد که نمیخام جی کار کنم .
یه راه دیگه هم هست که خودم برم یه کلاس validate بسازم که واقعا برای من زمان گیره .
یا اینکه یه کلاس بسازم و پروپتی های کلاس مدل رو تو این کلاس بریزم و سپس ولی دیت رو رو این کلاس اعما کنم و اون کلاس همون جوری بمونه . حالا اپدیتم کردمش کلاس مدل رو دوباره پروپر تی های جدید رو به این اضافه میکنم. اینجوری چطوره ؟:) میشه اینجوری؟

parvizwpf
یک شنبه 20 مهر 1393, 11:03 صبح
امیدوارم کمک کنه:
http://stackoverflow.com/questions/6758525/update-model-from-database-database-first

RIG000
یک شنبه 20 مهر 1393, 12:04 عصر
No, the files will be regenerated every time.
All the classes are defined as partial so you can easily add DataAnnotations using the MetadataTypeAttribute.
Let's say you have a User class defined as follow:
public partial class User {
public string Name {get;set;}
} Create a IUser interface
public interface IUser {
[Required]
[DisplayName("User name")]
string Name {get;set;}
} And then extend the User class to specify that IUser will be used as metadata.
[MetadataType(typeof(IUser))]
public partial class User {} //Empty class body

این خوبه فکر میکنم اما نحوه پیاده سازیشو نمیدونم. قاطی کردم...:(