Настройте сгенерированный первый код модели для WPF в Visual Studio

Я использую Конструктор моделей Visual Studio для создания классов объектов. Теперь я хочу настроить сгенерированные классы с изменениями наследования и получения/установки.

Если конструктор моделей, например, создал класс Browser:

public partial class Browser
{
    public Browser(){}    
    public int Id { get; set; }
    public string Name { get; set; }
}

Я хочу настроить сгенерированный код на

public partial class Browser : ValidatableModel, IFormattable
{
    public string name;


    public Browser(){ name = "" }    
    public Guid Id { get; private set; }
    public string Name 
    {
        get { return name; }
        set { SetPropertyAndValidate(ref name, value); }
    }
}

Я использую инфраструктуру приложений WPF, которая реализует базу данных не так, как я хочу.

Знаете ли вы решение для этого или любой другой подход к использованию подхода Model First в WPF? Я думаю, что он должен быть.


person 10ff    schedule 21.08.2013    source источник


Ответы (1)


Вы не должны изменять сгенерированный код; любые обновления вашей модели уничтожат их. Вам нужно изменить свою модель, а затем отправить эти изменения в базу данных.

Пользовательский геттер/сеттер может быть реализован в частичном классе. Ваш новый сгенерированный код должен выглядеть так:

public partial class Browser
{
    public string name;


    public Browser(){ }    
    public Guid Id { get; set; }
    public string Name {get; set;}
}

Затем вы добавляете частичный класс следующим образом:

public partial class Browser : ValidatableModel, IFormattable
{
    public string name;

    public override Browser(){ name = "" }    
    public override Guid Id { get; private set; }
    public override string Name 
    {
        get { return name; }
        set { SetPropertyAndValidate(ref name, value); }
    }
}
person Joe Brunscheon    schedule 21.08.2013
comment
Не могу этого сделать, потому что компилятор говорит, что браузер уже содержит определение для идентификатора и имени. Вы знаете другой способ? - person 10ff; 23.08.2013
comment
Не был уверен, сработает это или нет из-за этого. Это стоило того. Единственный известный мне другой способ сделать что-то подобное — это создать классы, которые по сути являются копиями ваших классов сущностей, а затем выполнить сложное сопоставление с сущностями, прежде чем вы сохраните их в базе данных. Итак, извлечение объектов -> Сопоставление с объектами. Сохранение: взять объекты -> сопоставить объекты -> сохранить. Я НЕ рекомендую делать это, так как затем вам придется выяснить, как определить, изменен ли объект, и обрабатывать все состояние, которое вы получаете с помощью Entity Framework. - person Joe Brunscheon; 24.08.2013