Orm RepoDb找不到映射配置

Orm RepoDb找不到映射配置,orm,Orm,我试图使用RepoDb查询表的内容(在现有Sql Server数据库中),但所有尝试都会导致InvalidOperationException(在数据读取器的结果集和类型“MyType”之间找不到“constructor parameter”和/或“property member”绑定) 我使用的查询如下所示: public Task<ICollection<MyType>> GetAllAsync() { var result =

我试图使用RepoDb查询表的内容(在现有Sql Server数据库中),但所有尝试都会导致
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,这样我就可以利用属性处理程序。在这个错误和意外覆盖数据库配置的一部分之间,我花了一点时间才开始。之后呃这是一帆风顺的,只有几个小问题要解决,很高兴听到。