繁体   English   中英

在 .NET 中支持不同的道具类型,EF 与 C#

[英]Backing different prop type in .NET, EF with C#

我尝试执行以下操作:

Product model:

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”。 只能使用与属性类型兼容的类型的支持字段。

我明白为什么,但无法弄清楚如何解决这个问题,请帮忙。

请考虑将 PictureUrl 设为一个实体,但您尝试的操作会奏效。

字符串需要是字符串类型的影子属性,而不是映射到数组属性。 例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM