Вопрос: Есть ли способ в 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)?