Dapper SetTypeMap Break DapperExtension's ClassMapper



在我的项目中,我正在使用自定义的sqlmapper在dapper中映射我的db列,但是当我将dapper设置为用户以用户为我的自定义类型映射器时:

Dapper.SqlMapper.SetTypeMap(typeof(User), new UserMapper());

dapperextension不再能够映射我的用户类,因此当我这样做时:

User item = cn.Get<User>(id);

该项目仅包含默认值。

我的usermapper不会干扰dapperextensions的ClassMapper实现,而仅实现sqlmapper.itypemap

您是否认为它以任何方式覆盖了DappErxensions功能?谢谢您的帮助

进一步调查后,我终于能够找到并解决问题:假设我有一个带有属性 id 映射到我的usermapper中的属性的测试频道到数据库列 userId

  • dapper 执行查询(ex。Select * From用户(时,它向我的UserMapper询问它可以映射" userId"列的属性(=> id(。
  • dapperextension 执行查询时,它要求我的usermapper到哪个属性可以映射列" id"(=>?(。这是因为 dapperextension 执行诸如"从用户中选择用户ID为ID"之类的查询,因此该列已经映射了,但是我的UserMapper找不到带有名称= id的IproperteMap。

通过检查是否搜索使用 columnName = id fafs fafs搜索iPropertymap;如果是这样,我通过搜索 name = id 。。。

如果您认为这可以更好地解决,请让我知道谢谢!