Задать для свойств свойств БД свойства сущности методы IsRequired () и defaultValue: "('')"? - PullRequest
1 голос
/ 06 апреля 2019

Я новичок в EF Core 2 и пытаюсь создать свойства Entity, которые не равны NULL, со значением по умолчанию пустого пространства.Я использую свободный API.Конечным результатом является привязка данных по умолчанию N '(' '' ')' на стороне SqlServer.Я вполне уверен, что это ошибка, но есть ли известный обходной путь?

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

public class EfficacyDBContext : DbContext
{
    public virtual DbSet<Person> Person { get; protected set; }
    public virtual DbSet<PersonType> PersonType { get; protected set; }

    public EfficacyDBContext(DbContextOptions options) : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfiguration(new PersonEntityTypeConfiguration());
        modelBuilder.ApplyConfiguration(new PersonTypeEntityTypeConfiguration());
    }
}
public class PersonEntityTypeConfiguration : IEntityTypeConfiguration<Person>
{
    public void Configure(EntityTypeBuilder<Person> builder)
    {
        builder.ToTable("Person.Person");
        builder.HasKey(x => x.Id);
        builder.Property(x => x.Id).ValueGeneratedOnAdd();
        builder.Property(x => x.FirstName).HasMaxLength(50)
            .HasDefaultValue("('')").IsRequired();
    }
}

На стороне SqlServer я ожидаю, что полепо умолчанию пустое значение, когда ничего не вводится.Однако из-за асимметричной привязки данных я получаю значение по умолчанию ('')

1 Ответ

1 голос
/ 06 апреля 2019

Вы используете HasDefaultValue метод неправильно.Он ожидает значение , пока вы передаете фрагмент SQL .Последнее поддерживается, но другим способом - HasDefaultValueSql .

Так что используйте либо

.HasDefaultValue("")

или

.HasDefaultValueSql("('')")

Справка: Документация EF Core - Значения по умолчанию

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