c#-4.0 - Entity Framework Core 2.1:在实体类型“BarCodeDevice”上找不到属性“模型”的指定字段“模型”
问题描述
我需要使用 Code First 方法通过 Entity Framework Core 2.1 生成数据库,但我收到此错误:
The specified field 'Model' could not be found for property 'Model' on entity type 'BarCodeDevice'.
这是我曾经这样做过的课程
public class BarCodeDevice
{
public int SerialNumber { get; set; }
public string Model { get; set; }
public virtual ICollection<ClientBarCodeDevice> ClientBarCodeDeviceList { get; set; }
}
和配置类
public class BarCodeDeviceConfiguration : IEntityTypeConfiguration<BarCodeDevice>
{
public void Configure(EntityTypeBuilder<BarCodeDevice> builder)
{
builder.HasKey(x => x.SerialNumber);
builder.Property(t => t.Model)
.IsRequired()
.HasField("Model");
}
}
和 DbContext 类
public class SegregationDbContext : DbContext, IDisposable
{
public SegregationDbContext(DbContextOptions<SegregationDbContext> options) : base(options)
{ }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new BarCodeDeviceConfiguration());
}
public DbSet<BarCodeDevice> BarCodeDevices { get; set; }
}
最后是配置
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<SegregationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
services.AddMvc();
}
解决方案
问题是这个流畅的配置行:
.HasField("Model")
HasField
当支持字段名称不符合约定时,用于指定正在配置的属性的支持字段。
但是您Model
的属性是自动属性,并且没有称为的支持字段Model
,因此是例外。
所以要么删除那条线,例如
builder.Property(t => t.Model)
.IsRequired();
或者如果您想强制使用名称未知的支持字段(自动属性就是这种情况),请改用UsePropertyAccessMode
方法,例如
builder.Property(t => t.Model)
.IsRequired()
.UsePropertyAccessMode(PropertyAccessMode.Field);
推荐阅读
- c# - 调用 void async 等于 Task.Run?
- android - 如果我未满 18 岁,我可以创建一个谷歌开发者帐户吗?
- neo4j - 图嵌入算法是否适用于英语以外的其他语言?
- ruby-on-rails - 如何配置 NGINX 以在 Ruby on rails 应用程序中接收 smtp 电子邮件?
- javascript - 渲染后状态设置为初始值
- mysql - 使用while循环等待回调时未执行NodeJS Mysql异步查询
- java - 如何根据JAVA中存在的整数值对字符串进行排序
- python - Python/Flask/SQLite - 没有 SQLAlchemy 的带有下一个/上一个按钮的分页和导航
- flutter - 如何将音频的 StreamedResponse 保存到 Flutter 中的文件?
- javascript - $scope 变量不加载值