Есть ли способ применить преобразование значений к резервным полям? - PullRequest
0 голосов
/ 09 апреля 2019

Вопрос: Есть ли способ в Entity Framework Core 3.0 применить преобразование значения в вспомогательные поля ?

Контекст: Допустим, у меня есть сущность Blog, которая содержит список строковых значений, представляющих идентификаторы записей.Я хочу избежать необходимости иметь объединяющую сущность / таблицу (как описано здесь ), поэтому я делаю преобразование для сохранения списка в виде строки в БД.Я также хочу защитить свою модель от изменения непосредственно через свойство PostIds, поэтому я хочу использовать для этого вспомогательное поле (как описано здесь ).

Примерно так:

public class Blog
{
    public int BlogId { get; set; }

    private readonly List<string> _postIds;
    public IReadOnlyCollection<string> PostIds => _postIds;

    public Blog()
    {
        _posts = new List<Post>();
    }
}

И конфигурация контекста будет выглядеть примерно так:

protected override void OnModelCreating(ModelBuilder modelBuilder)  
{
    // Configuring the backing field
    modelBuilder.Entity<Blog>()
                .Metadata
                .FindNavigation(nameof(Blog.PostIds))
                .SetPropertyAccessMode(PropertyAccessMode.Field);

    // Trying to configure the value conversion, but that doesn't work...
    modelBuilder.Entity<Blog>()
                .Property(e => e.PostIds)
                .HasConversion(v => string.Join(',', v),
                               v => v.Split(','));
}

Есть идеи, как можно добиться этой конфигурации с текущей версией Entity Framework (3.0)?

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