Как программно обновить модель объекта (EF 5) - PullRequest
0 голосов
/ 04 апреля 2019

Мы получили C # -приложение, созданное с VS2015, в котором мы используем платформу сущностей (EF 5 с данными в первую очередь).

В модели мы должны настроить столбец в некоторых включенных сущностях из базы данных, чтобыStoreGeneratedPattern = Computed.

В нашем случае мы получили в этих сущностях столбец типа datetime, в который мы хотим в случае вставки текущей метки времени (как она определена в базе данных) без явной установки ее в коде.

Этого можно достичь в конструкторе EDMX, установив шаблон вручную.

Но поскольку мы время от времени обновляем модель, удаляя измененные объекты и повторно добавляя их с помощью «Обновить модель»из базы данных "настройки шаблона будут потеряны и должны быть добавлены заново.

Поскольку это опасно, если разработчик забудет настроить один из столбцов сущности, мы хотели настроить его в модели по коду.

Итак, мы попробовали это в конструкторе модели сущностей:

public MyEntity()
    : base("name=MyEntity")
{
    DbModelBuilder modelBuilder = new DbModelBuilder();
    modelBuilder.Entity<Table_A>().Property(t => t.column1)
        .HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed);
}

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

Как мы можем решить эту проблему?

Любая помощь будет принята с благодарностью.

Патрик

1 Ответ

0 голосов
/ 04 апреля 2019

Сгенерированный класс всегда будет частичным классом. Это позволяет вам написать второй частичный класс, который помечен с необходимыми изменениями в вашем случае вы можете создать другой частичный класс, который будет содержать вашу модификацию после обновления Edmx созданный частичный класс не будет восстановлен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...