【发布时间】: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