DbContext中DbSet3查询报无效对象名问题排查与解决
问题:查询DbSet3时提示“对象名DbSet3无效”,其余DbSet查询正常
问题场景
在DbContext中配置了三个DbSet:
internal class MyDbContext: DbContext { internal DbSet<MyType1> DbSet1 { get; set; } internal DbSet<MyType2> DbSet2 { get; set; } internal DbSet<MyType3> DbSet3 { get; set; } }
查询DbSet1和DbSet2均正常,但执行以下DbSet3查询时,抛出“对象名DbSet3无效”的错误:
return await _contexto.DbSet3 .Where(x => x.Id== paramId) .ToListAsync();
尝试将DbSet3的类型改为MyType2后,查询可正常执行:
internal DbSet<MyType2> DbSet3 { get; set; }
问题原因
实体类型配置类出现错误:ConfigurationMyType3类错误地实现了IEntityTypeConfiguration<MyType4>,而非对应MyType3的配置,导致EF Core无法正确建立MyType3与数据库表的映射关系,进而查询时找不到对应的表对象。
错误的配置类代码:
internal class ConfigurationMyType3: IEntityTypeConfiguration<MyType4> { public void Configure(EntityTypeBuilder<MyType4> config) { } }
解决方案
将配置类的泛型类型修正为MyType3,确保配置与实体类型匹配:
internal class ConfigurationMyType3: IEntityTypeConfiguration<MyType3> { public void Configure(EntityTypeBuilder<MyType3> config) { } }
内容的提问来源于stack exchange,提问作者Álvaro García
相关产品推荐
相关产品推荐

