EF Core: как зарегистрировать несколько преобразований значений? - PullRequest
1 голос
/ 26 июня 2019

Ниже приведены допустимые способы регистрации преобразований значений (фрагменты взяты из здесь ):

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
        .Entity<Rider>()
        .Property(e => e.Mount)
        .HasConversion(
            v => v.ToString(),
            v => (EquineBeast)Enum.Parse(typeof(EquineBeast), v));
}

и

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    var converter = new ValueConverter<EquineBeast, string>(
        v => v.ToString(),
        v => (EquineBeast)Enum.Parse(typeof(EquineBeast), v));

    modelBuilder
        .Entity<Rider>()
        .Property(e => e.SecondaryMount)
        .HasConversion(converter);
}

Мой вопрос:

  • Если я хотел бы зарегистрировать несколько преобразований значений для одного и того же типа (точно так же, как приведенные выше фрагменты), как я могу сделать это в одной строке?

Например, яожидал, что сработает следующее, но оно не .

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    var converter = new ValueConverter<EquineBeast, string>(
        v => v.ToString(),
        v => (EquineBeast)Enum.Parse(typeof(EquineBeast), v));

    modelBuilder
        .Entity<Rider>()
        .Property(e => e.Mount)
        .HasConversion(
            v => v.ToString(),
            v => (EquineBeast)Enum.Parse(typeof(EquineBeast), v))
        .Property(e => e.SecondaryMount) // doesn't work; can't append another property registration
        .HasConversion(converter);
}

1 Ответ

1 голос
/ 26 июня 2019

Я почти уверен, что каждое свойство представляет собой одно утверждение, например, приведенное ниже.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    var converter = new ValueConverter<EquineBeast, string>(
        v => v.ToString(),
        v => (EquineBeast)Enum.Parse(typeof(EquineBeast), v));

    modelBuilder
        .Entity<Rider>()
        .Property(e => e.Mount)
        .HasConversion(converter);
    modelBuilder
        .Entity<Rider>()
        .Property(e => e.SecondaryMount)
        .HasConversion(converter);

}
...