Модель
class Tag
{
public int Id { get; set; }
public string Name { get; set;}
public IEnumerable<TagAttribute> TagAttributes => _tagAttributes.AsReadOnly();
private List<TagAttribute> tagAttributes;
}
class TagAttribute
{
public int Id { get; set; }
public string Value{ get; set;}
public int TagId { get; set; }
}
Я следовал документации , чтобы настроить вспомогательное поле
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// This works
//var t = modelBuilder.Entity<Tag>().Metadata.FindNavigation(nameof(Tag.TagAttributes));
//t.SetPropertyAccessMode(PropertyAccessMode.Field);
// This does not
modelBuilder.Entity<Tag>()
.Property(q => q.TagAttributes)
.HasField("tagAttributes")
.UsePropertyAccessMode(PropertyAccessMode.Field);
}
Может кто-нибудь объяснить, в чем отличие этих методов, пожалуйста?
Это ошибка, которую я получаю при использовании 2-го метода для настройки вспомогательного поля ...
System.InvalidOperationException: 'Свойство' Tag.TagAttributes 'имеет тип'IEnumerable ', который не поддерживается текущим поставщиком базы данных. Измените тип CLR свойства или игнорируйте свойство с помощью атрибута [NotMapped] или с помощью EntityTypeBuilder.Ignore в OnModelCreating.