مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

djary

عضویت از 1393/10/28

ازبین رفتن فیلترها بعد از بروز رسانی دیتابیس در database first

  • چهارشنبه 13 آبان 1394
  • 09:57
تشکر میکنم

سلام خسته نباشید

همونطور که میدونید فیلترگذاری امر وقت گیری هست ،زمانی که دیتابیس رو آپدیت میکنید کل فیلتر ها نیز پاک میشه (ظاهرا کلاس ها رو کامل پاک میکنه و از اول میسازه)

راهی وجود نداره تا فیلتر ها جای خودشون بمون ؟

با سپاس

پاسخ های این پرسش

تعداد پاسخ ها : 15 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 13 آبان 1394
  • 13:00

میتونید در model.tt تغییرات را اعمال کنید

یا کلاس هایی به عنوان MetaData ایجاد کنید تا صفت ها را به این کلاس اعمال کنید و دیگر نگران پاک شدن صفت ها نباشید

کاربر سایت

علی شهریاری

عضویت از 1393/05/30

  • چهارشنبه 13 آبان 1394
  • 13:05

با سلام و خسته نباشید خدمت شما دوست عزیز

برای رفع این مشکل شما باید یک کلاس internal  جدا برای هریک از کلاس های تولید شده در model  در نظر بگیر ( با خصوصیات یکسان ,  نیازی به نوشتن کد های مربوط به ارتباط بین جداول نیست) سپس یک ارتباط بین انها ایجاد کنید  ,  لازم به ذکر است که باید فضای نام یکسان باشد به مثال زیر توجه کنید

 

کد تولید شده توسط mvc 

namespace MvcInternetShop.Models.DomainModels
{
    using System;
    using System.Collections.Generic;
    
    public partial class User
    {
        public User()
        {
            this.Factors = new HashSet<Factor>();
        }
    
        public int Id { get; set; }
        public string Name { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public Nullable<System.DateTime> BirthDate { get; set; }
        public string Mobile { get; set; }
        public string Tell { get; set; }
        public bool Gender { get; set; }
        public byte Status { get; set; }
        public string Roles { get; set; }
    
        public virtual ICollection<Factor> Factors { get; set; }
    }
}

 

و کدی که ماباید بنویسیم

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcInternetShop.Models.EntityModels
{
    internal class UserMetaData
    {
        [ScaffoldColumn(false)]
        [Bindable(false)]
        public int Id { get; set; }

        [Required(ErrorMessage = "نام و نام خانوادگی خود را وارد کنید", AllowEmptyStrings = false)]
        [DisplayName("نام و نام خانوادگی")]
        [Display(Name = "نام و نام خانوادگی")]
        [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")]
        public string Name { get; set; }

        [Required(ErrorMessage = "ایمیل خود را وارد کنید")]
        [Display(Name = "ایمیل (نام کاربری)")]
        [DisplayName("ایمیل (نام کاربری)")]
        [RegularExpression(@"^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,4})$", ErrorMessage = "ایمیل را بدرستی وارد کنید")]
        [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")]
        public string Username { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "رمز عبور خود را وارد کنید")]
        [DisplayName("رمز عبور")]
        [Display(Name = "رمز عبور")]
        [DataType(DataType.Password)]
        public string Password { get; set; }

        [Display(Name = "تاریخ تولد")]
        [DisplayName("تاریخ تولد")]
        public Nullable<System.DateTime> BirthDate { get; set; }

        [DisplayName("شماره موبایل")]
        [Display(Name = "شماره موبایل")]
        [RegularExpression(@"^0?9[123]\d{8}$", ErrorMessage = "شماره موبایل را بدرستی وارد کنید")]
        [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")]
        public string Mobile { get; set; }

        [Display(Name = "شماره تماس")]
        [DisplayName("شماره تماس")]
        [StringLength(50, ErrorMessage = "این فیلد باید حداکثر 50 کاراکتر باشد")]
        public string Tell { get; set; }

        [DisplayName("جنسیت")]
        [Display(Name = "جنسیت")]
        public bool Gender { get; set; }

        [ScaffoldColumn(false)]
        [DisplayName("وضعیت")]
        [Display(Name = "وضعیت")]
        public byte Status { get; set; }
    }

}

namespace MvcInternetShop.Models.DomainModels
{
    [MetadataType(typeof(MvcInternetShop.Models.EntityModels.UserMetaData))]
    public partial class User
    {
        [Required(AllowEmptyStrings = false, ErrorMessage = "رمز عبور خود را تکرار کنید")]
        [DisplayName("تکرار رمز عبور")]
        [Display(Name = "تکرار رمز عبور")]
        [DataType(DataType.Password)]
        [Compare("Password", ErrorMessage = "تکرار پسورد یکسان نیست")]
        public string ConfirmPassword { get; set; }
    }
}

امید وارم استفاده ببرید . یا حق

کاربر سایت

djary

عضویت از 1393/10/28

  • پنجشنبه 14 آبان 1394
  • 12:45

ممنون فقط یک سوال این کلاس UserMetaData که خودمان ایجاد می کنیم باید در پوشه مدل باشه ؟

و کلا نیاز به معرفی چیزی در ویو نیست ؟

 

باسپاس

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 14 آبان 1394
  • 12:54

اجباری نیست ولی اگر در Model باشه بهتره

نه نیازی به تغییر در VIew نیست

کاربر سایت

djary

عضویت از 1393/10/28

  • سه شنبه 19 آبان 1394
  • 15:49

سلام من این کارو انجام دادم و درست شد اما 

زمانی که بک ویو پاک کردم و دوباره ساختم ،فیلترها اعمال نشدن !

مثالا تکس ادیتور کامل اعمال نمیشه !

کاربر سایت

djary

عضویت از 1393/10/28

  • سه شنبه 19 آبان 1394
  • 18:41

کسی دلیلشو نمیدونه ؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 19 آبان 1394
  • 18:45

حتما کلاس Metadata را به کلاس اصلی وصل نکردید

  [MetadataType(typeof(MvcInternetShop.Models.EntityModels.UserMetaData))]

 

کاربر سایت

djary

عضویت از 1393/10/28

  • سه شنبه 19 آبان 1394
  • 19:27

والا من اینطوری نوشتم

namespace SPR.Models
{

    [MetadataType(typeof(PostsMetaData))]
    public partial class Posts
    {
    }
}

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 19 آبان 1394
  • 19:39

صفت ها رو باید داخل کلاس Metadata اعمال کنید

کاربر سایت

djary

عضویت از 1393/10/28

  • سه شنبه 19 آبان 1394
  • 19:44

کلا کلاس متادیتام اینه

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SPR.Models
{
    internal class PostsMetaData
    {
        [Key]
        public int PostID { get; set; }
        [Display(Name = "موضوع دسته بندی")]
        public int PostGroupsID { get; set; }
        [Display(Name = "عنوان مطلب")]
        [Required(ErrorMessage = "اجباری! لطفا{0} را پر کنید.")]
        public string PostTitle { get; set; }
        [Display(Name = "محتوای مطلب")]
        [Required(ErrorMessage = "اجباری! لطفا{0} را پر کنید.")]
        [UIHint("RichText")]

        public string PostContent { get; set; }
        //پنهان کردن
        [ScaffoldColumn(false)]
        public System.DateTime PostContentDate { get; set; }
        //پنهان کردن
        [ScaffoldColumn(false)]
        public string PostImageTumbnailURL { get; set; }
        //پنهان کردن
        [ScaffoldColumn(false)]
        public Nullable<int> CommentID { get; set; }
        //پنهان کردن
        [ScaffoldColumn(false)]
        public int UserID { get; set; }
        [UIHint("RichText")]
        [Display(Name = "خلاصه مطلب")]
        [Required(ErrorMessage = "اجباری! لطفا{0} را پر کنید.")]
        [StringLength(500)]
        public string PostContentSummary { get; set; }
        [Display(Name = "عکس مطلب")]
        [Required(ErrorMessage = "اجباری! لطفا{0} را پر کنید.")]
        public string PostImageURL { get; set; }

    }

}

namespace SPR.Models
{

    [MetadataType(typeof(PostsMetaData))]
    public partial class Posts
    {
    }
}

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 19 آبان 1394
  • 19:49

همه چی درست به نظر میاد

در واقع باید درست کار کنه

کاربر سایت

djary

عضویت از 1393/10/28

  • سه شنبه 19 آبان 1394
  • 19:55

مثلا [UIHint("RichText")] برای posts  کار نمیکنه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 19 آبان 1394
  • 19:59

چرا از DataType استفاده نکردید ؟

آیا Customize کردید ؟

کاربر سایت

djary

عضویت از 1393/10/28

  • سه شنبه 19 آبان 1394
  • 22:55

منظورتون رو متوجه نشدم

کاربر سایت

djary

عضویت از 1393/10/28

  • چهارشنبه 20 آبان 1394
  • 00:56

دزستش کردم

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)