2014-07-25 2 views
0

Я использую Entity Framework 6 (первая модель). Поэтому у меня есть несколько классов, которые создаются для меня по model.tt. Вот мой класс автомобиля:Добавление PropertyChanged.Fody в Entity Framework Model.tt

//------------------------------------------------------------------------------ 
// <auto-generated> 
//  This code was generated from a template. 
// 
//  Manual changes to this file may cause unexpected behavior in your application. 
//  Manual changes to this file will be overwritten if the code is regenerated. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

namespace MyNamespace 
{ 

    using System; 
    using System.Collections.Generic; 

    public partial class Car 
    { 
     public Car() 
     { 
      this.Wheels = new HashSet<Wheel>(); 
     } 

     public int CarId { get; set; } 
     public string Make { get; set; } 
     public string Model { get; set; } 
     public string Year { get; set; } 
     public string VIN { get; set; } 

     public virtual ICollection<Wheel> Wheels { get; set; } 
    } 
} 

Я также использую PropertyChanged.Fody на другие классы в моем проекте. У меня есть несколько классов со свойствами, которые просто оберточной свойства из моих сгенерированных классов, например, так:

using System; 
using PropertyChanged; 

namespace MyNamespace 
{ 
    [ImplementPropertyChanged] 
    public class CarWrapper 
    { 

     public CarWrapper(Car car) 
     { 
      Car = car; 
     } 

     public Car car { get; set; } 

     public string Make 
     { 
      get { return Car.Make; } 
      set { Car.Make = value; } 
     } 

     public string Model 
     { 
      get { return Car.Model; } 
      set { Car.Model = value; } 
     }  

     public string Year 
     { 
      get { return Car.Year; } 
      set { Car.Year = value; } 
     } 

     public string VIN 
     { 
      get { return Car.VIN; } 
      set { Car.VIN = value; } 
     } 
    } 
} 

Так, ProperyChanged.Fody бы это волшебство на моей собственности автомобиля, а не другие, но если бы я изменить my Model.tt и добавьте атрибут [ImplementPropertyChanged], мои сгенерированные классы будут уведомлять об изменении свойств. Тогда я мог бы изменить автомобиль в собственность CarWrapper следующим образом:

[AlsoNotifyFor("Make")] 
[AlsoNotifyFor("Model")] 
[AlsoNotifyFor("Year")] 
[AlsoNotifyFor("VIN")] 
public Car car { get; set; } 

Будет ли это хорошая вещь, чтобы делать вообще, если я хочу, чтобы получать уведомления об изменении собственности в автомобиле? Было бы лишним? Любые другие предложения?

ответ

0

В итоге я добавил [RealplementsPropertyChanged] в другой частичный класс класса Car. Это позволяет мне контролировать, какие классы действительно нуждаются в реализации изменений свойств.

Хотя добавление его в файл .tt не вызывает проблем, добавление его в другое «половину» частичного класса позволяет получить больше контроля.

Смежные вопросы