Добавляйте модификации в свою модель при использовании EF Core DB First Design - PullRequest
0 голосов
/ 01 декабря 2018

Моя команда использует Db first design.Мы создаем базу данных, затем создаем модель с помощью команды Scaffold-DbContext.

Проблема в том, что нам нужно изменить модель и затем выполнить воссоздание.

public partial class UserInfo
{
    public int Id { get; set; }
    [Required]
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public DateTime RecordCreated { get; set; }
}

После вызоваScaffold-DbContext с -Force удалит из него [Обязательный].

Должен ли я смотреть на использование ViewModel, создание частичных классов или что?

Очень рано при использовании EFCore 2.1, поэтому любая помощь будет принята с благодарностью.

Джо

Ответы [ 4 ]

0 голосов
/ 02 декабря 2018

Если вы сначала используете базу данных, вы делаете обязательным столбец базы данных (NOT NULL), а затем снова запускаете scaffolding, а не наоборот.При создании лесов вы можете выбрать создание сгенерированных атрибутов поверх свободной конфигурации, если вы это сделаете, вы получите добавленный атрибут «Обязательный» (для ссылочных типов).

Переключатель для Scaffold-Dbontext - -DataAnnotations

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell#scaffold-dbcontext

0 голосов
/ 02 декабря 2018

Используйте EF Core Power Tools, он генерирует частичный метод для OnModelCreating, а затем использует плавный API в новом частичном классе, чтобы установить обязательную опцию вместо атрибутов.

0 голосов
/ 02 декабря 2018

Как указал ErikEJ, это не сработает:

Вы можете использовать класс метаданных вместе с частичным классом (пример скопирован из doc ):

using System;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;
using System.Globalization;

[MetadataType(typeof(UserInfoMetaData))]
public partial class UserInfo
{

}

public class UserInfoMetaData
{
    [Required()]
    public object FirstName;
}

Это будет находиться в отдельном файле, который не будет затронут code-gen.Обратите внимание, что вам не нужно добавлять все свойства в класс метаданных, и их тип не имеет значения - но имена должны совпадать.

Однако есть несколько способов, как заставить его работать, см. этот элемент SO , который сам основан на этом форуме ASP.NET вопрос .В ссылке ASP.net также предлагается выполнить проверку модели представления вместо классов данных.Так что это может быть возможность рассмотреть.

0 голосов
/ 02 декабря 2018

Я понимаю, что сначала была создана БД, но после первоначального создания моделей, если вы делаете изменения модели до изменений в БД, было бы лучше создать миграции из кода таким образом, чтобы все изменения в моделях были реплицированы в базе данных.,

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