【问题标题】:Class member is inaccesible due to it's protection level类成员由于其保护级别而无法访问
【发布时间】:2019-07-31 14:00:26
【问题描述】:

我创建了一个类ENNumber,我试图将其映射到数据库字段。当我尝试在我的地图中链接这两者时,我收到表达式由于其保护级别而无法访问的错误。

我已确保我的班级成员是公开的,并且我在其他地方引用它的任何地方也是公开的。

public class ENNumber
  {
    public int Id { get; set; }

    public string Name { get; set; }

    public virtual ICollection<ENNumber_QRFItem> ENNumQrfItem { get; set; }
  }
public class QRF1896 : Emailable
  {
    public int Id { get; set; }

    public DateTime Timestamp { get; set; }

    [Required]
    public Decimal? Temperature { get; set; }

    [Required]
    public Decimal? Humidity { get; set; }

    public string Username { get; set; }

    [Required]
    [Display(Name = "EN Number")]
    public virtual ENNumber ENNumber { get; set; }

    [Display(Name = "Valid temperature")]
    [Required]
    public bool ValidTemp { get; set; }

    [Display(Name = "Valid humidity")]
    [Required]
    public bool ValidHumidity { get; set; }

    public string Updated_Username { get; set; }

    public DateTime? Updated_Timestamp { get; set; }
  }
public class QRF1896Map : EntityTypeConfiguration<QRF1896>
  {
    public QRF1896Map()
    {
      this.HasKey<int>((Expression<Func<QRF1896, int>>) (t => t.Id));
      this.Property((Expression<Func<QRF1896, string>>) (t => t.Username)).IsRequired().HasMaxLength(new int?(50));
      this.ToTable("QRF1896");
      this.Property<int>((Expression<Func<QRF1896, int>>) (t => t.Id)).HasColumnName("Id");
      this.Property((Expression<Func<QRF1896, DateTime>>) (t => t.Timestamp)).HasColumnName("Timestamp");
      this.Property((Expression<Func<QRF1896, Decimal?>>) (t => t.Temperature)).HasColumnName("Temperature");
      this.Property((Expression<Func<QRF1896, Decimal?>>) (t => t.Humidity)).HasColumnName("Humidity");
      this.Property((Expression<Func<QRF1896, string>>) (t => t.ENNumber.Name)).HasColumnName("ENNum"); // <- error here
      this.Property((Expression<Func<QRF1896, string>>) (t => t.Username)).HasColumnName("Username");
      this.Property<bool>((Expression<Func<QRF1896, bool>>) (t => t.ValidTemp)).HasColumnName("ValidTemp");
      this.Property<bool>((Expression<Func<QRF1896, bool>>) (t => t.ValidHumidity)).HasColumnName("ValidHumidity");
    }
  }

实际错误是:

Error   1   'System.Data.Entity.ModelConfiguration.Configuration.StructuralTypeConfiguration<QRF.Db.Models.QRF1896>.Property<TPrimitivePropertyConfiguration>(System.Linq.Expressions.LambdaExpression)' is inaccessible due to its protection level

【问题讨论】:

  • ENNumber_QRFItem 也是公开的吗?
  • @kara 是的,该类的声明是public class ENNumber_QRFItem

标签: c# asp.net-mvc lambda


【解决方案1】:

最终对我有用的只是在 VS 中清理/重建我的解决方案。谁知道? :P

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2011-09-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多