代码之家  ›  专栏  ›  技术社区  ›  Eduard Stefanescu

无法映射属性“PropertyName”,因为它的类型为“List<decimal>”

  •  1
  • Eduard Stefanescu  · 技术社区  · 6 年前

    当我尝试使用EntityFramework核心创建数据库时遇到此问题:

    无法映射属性“Rating.RatingScores”,因为它属于“List”类型,该类型不是受支持的基元类型或有效的实体类型。显式映射此属性,或使用“[NotMapped]”属性或使用“OnModelCreating”中的“EntityTypeBuilder.ignore”忽略它。

    这是课堂:

    public class Rating
    {
        public int Id { get; set; }
    
        public List<decimal> RatingScores { get; set; }
    
        public decimal Score
        {
            set => Score = value;
            get => Math.Round(RatingScores.Sum() / RatingScores.Count, 1);
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Matt Fricker    5 年前

    如果RatingScores类有多个RatingScores,则您有一对多关系,RatingScores属性需要自己的表,因此您需要创建一个新类。

    Class RatingScore 
    {
      public int Id { get; set; }
      public decimal RtSc { get; set; }
    }
    

    那么Rating属性将如下所示:

    public List<RatingScore> MyRatingScores { get; set; }
    

    但是,如果每个等级都有一个等级分数,则您的属性不应是集合。

    public RatingScore MyRatingScore { get; Set; }