Orm RepoDb找不到映射配置
我试图使用RepoDb查询表的内容(在现有Sql Server数据库中),但所有尝试都会导致Orm RepoDb找不到映射配置,orm,Orm,我试图使用RepoDb查询表的内容(在现有Sql Server数据库中),但所有尝试都会导致InvalidOperationException(在数据读取器的结果集和类型“MyType”之间找不到“constructor parameter”和/或“property member”绑定) 我使用的查询如下所示: public Task<ICollection<MyType>> GetAllAsync() { var result =
InvalidOperationException(在数据读取器的结果集和类型“MyType”之间找不到“constructor parameter”和/或“property member”绑定)
我使用的查询如下所示:
public Task<ICollection<MyType>> GetAllAsync()
{
var result = new List<MyType>();
using (var db = new SqlConnection(connectionString).EnsureOpen())
{
result = (await db.ExecuteQueryAsync<MyType>("select * from mytype")).ToList();
}
return result;
}
[Test]
public async Task MyTypeFetcher_returns_all()
{
SqlServerBootstrap.Initialize();
var sut = new MyTypeFetcher("connection string");
var actual = await sut.GetAllAsync();
Assert.IsNotNull(actual);
}
我试图映射到的实体与数据库表匹配(即类名和表名相同,属性名和表列名也匹配)
我也试过:
- 在我试图映射到的类上放置注释(在类级别和属性级别)
- 使用类映射器将类映射到db表
- 使用FluentMapper映射整个类(即实体表、所有列、标识、主)
- 将所有映射放入一个静态类,该类保存所有映射和配置,并在测试中调用该类
- 通过ClassMapper和FluentMapper在测试中直接提供映射信息
从错误消息来看,RepoDb似乎找不到我提供的映射。不幸的是,我不知道如何着手解决这个问题。我已经阅读了文档和示例教程,但还没有找到任何有用的东西。它们中的大多数似乎不需要任何映射配置(类似于使用Dapper时所期望的)。我遗漏了什么?我该如何解决这个问题?Hey@Andrew,你能在这里分享实际的课程和/或表格吗?您是否也检查了类的所有属性是否都是“可写的”?将属性从编译中排除的唯一可能原因是名称不平等或属性可写性。可以找到编译。另外,您是否能够检查
PropertyCache.Get()
,FieldCache.Get()
和/或DbFieldCache.Get(连接,“MyType”,null)
是否返回等效的列/属性?顺便说一句,在提取DbFieldCache.Get之类的DB字段时,如果使用实际的类型会更好(connection,ClassMappedNameCache.Get(),null)来测试实际调用。@MichaelCamaraPendon感谢这里的评论-他们给了我足够的信息让我弄清楚到底发生了什么(我怀疑这纯粹是我的错误)。事实证明,我测试的这个特定模型是不可写的。为了添加一些上下文,这是一个应用程序,我将用RepoDb替换Dapper,这样我就可以利用属性处理程序。在这个错误和意外覆盖数据库配置的一部分之间,我花了一点时间才开始。之后呃,这非常顺利,只有几个小问题需要解决。很高兴听到这个消息。嘿@Andrew,你能在这里共享实际的类和/或表吗?你是否也检查过你的类的所有属性是否都是“可写的”?这些属性被排除在编译之外的唯一可能的原因是name-inequality或属性可写性。可以找到编译。此外,您是否能够检查PropertyCache.Get()
、FieldCache.Get()
和/或DbFieldCache.Get(连接,“MyType”,null)是否为空
返回等效的列/属性?顺便说一句,如果在提取DbFieldCache.Get(connection,ClassMappedNameCache.Get(),null)等DB字段时使用实际类型来测试实际调用,那就太好了。@MichaelCamaraPendon感谢这里的评论-他们给了我足够的信息来了解到底发生了什么(我怀疑这纯粹是我的错误)。事实证明,我测试的这个特定模型是不可写的。为了添加一些上下文,这是一个应用程序,我将用RepoDb替换Dapper,这样我就可以利用属性处理程序。在这个错误和意外覆盖数据库配置的一部分之间,我花了一点时间才开始。之后呃这是一帆风顺的,只有几个小问题要解决,很高兴听到。