用C#支持.NET、EF中不同的 prop 类型

anauzrmj  于 2023-02-06  发布在  .NET
关注(0)|答案(1)|浏览(233)

我试着做了以下几点:
Product型号:

public class Product : BaseEntity
{
    public string Name { get; set; }
    public string Description { get; set; }
    private string _PictureUrls;

    [NotMapped]
    public string[] PictureUrls
    {
        get { return _PictureUrls.Split(','); }
        set { _PictureUrls = string.Join(',', value); }
    }
}

以及:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder
      .Entity<Product>()
      .Property(props => props.PictureUrls)
      .HasField("_PictureUrls")
      .UsePropertyAccessMode(PropertyAccessMode.PreferFieldDuringConstruction);
}

我一直收到错误:
类型为"string"的指定字段"_PictureUrls"不能用于类型为"string []"的属性"Product.PictureUrls"。只能使用类型与该属性类型兼容的支持字段。
我明白为什么,但不知道如何解决这个问题,请帮助。

yvfmudvl

yvfmudvl1#

请考虑将PictureUrl设置为实体,但您所尝试的方法将有效。
字符串需要是字符串类型的影子属性,而不是Map到数组属性

modelBuilder.Entity<Product>()
                .Property(typeof(string), "_PictureUrls")
                .HasField("_PictureUrls")
                .HasColumnName("PictureUrls")
                .UsePropertyAccessMode(PropertyAccessMode.PreferFieldDuringConstruction);

相关问题