型号
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; }
}
我已按照documentation配置后备字段
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);
}
任何人都可以解释这些方法的区别吗?
这是使用第二种方法配置后备字段时收到的错误...
System.InvalidOperationException:'属性'Tag.TagAttributes'为 当前不支持的“ IEnumerable”类型 数据库提供者。更改属性CLR类型或忽略 属性使用'[NotMapped]'属性或通过使用 “ “ OnModelCreating”中的“ EntityTypeBuilder.Ignore”。