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

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

کاربر سایت

mohammadyou

عضویت از 1395/01/09

نحوه ارتباط viewmodel به model

  • دوشنبه 9 فروردین 1395
  • 11:35
تشکر میکنم

سلام

می خواهم یک پروژه wpf را انجام بدم که در قسمت model آن به روش Entity framework code first  دیتابیس مورد نظر را با استفاده از sql compact ایجاد کردم

 //*************************************   CompanyManagementModel.cs  ***************
 public class CompanyManagementModel : DbContext
    {
        public CompanyManagementModel()
            : base("name=CompanyManagementModel")
        {
        }
        public DbSet<Activity> Activities { get; set; }
        public DbSet<Company> Companies { get; set; }
        public DbSet<Email> Emails { get; set; }
        public DbSet<Phone> Phones { get; set; }
    }

//*************************************   Company.cs   *************************************
    public class Company
    {
        public Company()
        {
            Activities=new HashSet<Activity>();
            Emails=new HashSet<Email>();
            Phones=new HashSet<Phone>();
        }
        public int CompanyId { get; set; }

        [Required]
        [StringLength(60)]
        public string Name { get; set; }

        public byte? Rate { get; set; }

        [Column(TypeName = "ntext")]
        public string Description { get; set; }
        public virtual ICollection<Activity> Activities { get; set; } 
        public virtual ICollection<Email> Emails { get; set; } 
        public virtual ICollection<Phone> Phones { get; set; }
    }

//*************************************   Activity.cs  *************************************
    public class Activity
    {
        public int ActivityId { get; set; }

        [StringLength(60)]
        public string Type { get; set; }

        [Column(TypeName = "ntext")]
        public string Description { get; set; }
        public int? CompanyId { get; set; }
    }

 در قسمت viewmodel هم از اونجایی که می خواهم دیتا را داخل telerik grid view نمایش بدم و بتوانم به صورت two way binding با داده ها کار کنم به صورت زیر در آوردم

//*************************************   CompanyList.cs  *************************************
  public class CompanyList:INotifyPropertyChanged
    {

        private string _name;
        private byte? _rate;
        private string _emailAddress;
        private long? _phoneNumber;
        private string _activityType;
        private string _description;

        public string Name
        {
            get { return _name; }
            set { _name = value; OnPropertyChanged(nameof(Name));}
        }
        public byte? Rate
        {
            get { return _rate; }
            set { _rate = value; OnPropertyChanged(nameof(Rate)); }
 
        }
        public string ActivityType {
            get { return _activityType; }
            set { _activityType = value; OnPropertyChanged(nameof(ActivityType)); }

        public string Description {
            get { return _description; }
            set { _description = value; OnPropertyChanged(nameof(Description)); }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,new PropertyChangedEventArgs(propertyName));
            }
        }
    }

حالا سوال من اینجا هستش که چجوری باید viewmodel را به model هام نسبت بدم و در نهایت اونا را به gridview متصل کنم. ممنون می شم منو راهنمایی کنید.

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

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

سجاد باقرزاده

عضویت از 1392/02/24

  • دوشنبه 9 فروردین 1395
  • 11:49

کافیه یک فایل cs با نام دلخواه برای ViewModel پنچره خود که GridView داخلش قرار دارد بسازید و DataContext آن صفحه را به ViewModel خود وصل کنید و حالا داخل ViewModel یک متد با return ای از لیست دلخواه خودتون را برگرداند و در نهایت ItemSource گرید را توسط آن لیست پر کنید.

کاربر سایت

mohammadyou

عضویت از 1395/01/09

  • دوشنبه 9 فروردین 1395
  • 15:09
ممنون آقا سجاد حالا سوال من اینه که چجوری طبق کدی که من نوشتم. Model (دیتابیس ام ) را به ViewModel وصل کنم.
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • چهارشنبه 11 فروردین 1395
  • 11:46

شما کافیه یک نمونه از DbContext خودتون داخل ViewModel بسازید و مدل مورد نظرتون را با دستورات Linq صدا بزنید ، یا اگر خود مدل خالی را بخواهید نام مدل را می نویسید از آن مدل یک نمونه میسازید.

CompanyManagementModel db = new CompanyManagementModel();

public List<Company> BindCompany()
{
return db.Company.ToList();
}

 

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

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

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

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