c# - 如何使用 Dapper.Contrib 通过唯一键获取实体?
问题描述
我有一个对象,假设
public class User
{
[Key]
int TheId { get; set; }
string Name { get; set; }
int Age { get; set; }
}
TheId
是我的自动增量列,Name
是我的唯一键。保存用户时,我想通过以下方式检查其存在:
var user= connection.Get<User>("John");
但是,由于我的 Key is not Name
but TheId
,我不能这样做。如果我将Name
属性设置为[KeyExplicit]
我想通过以下方式保存用户的时间:
connection.Insert(myUser);
这一次,dapper 期望TheId
我填充的属性,而不是让数据库自动增加。
所以,我想知道是否有一种优雅的方法可以在搜索数据库时将一些属性或属性标记为 dapper 考虑。我不想通过Guid
唯一键进行搜索。
解决方案
如果我理解正确的话,你愿意Get
按键以外的属性。
dapper-contrib 不支持此功能。对于Get
,您应该只使用关键字段。即使该其他属性是唯一键,这也是不可能的。您正在进行的任何其他调整(设置属性)都不是处理此问题的正确方法[KeyExplicit]
;Name
如您所见,它将产生其他问题。
对于Get
其他属性,更好的选择是直接绕过 Contrib 使用 Dapper。
推荐阅读
- javascript - 为类中的所有元素添加基于innerHTML的ID
- wso2 - wso2 身份服务器管理 JDBCUserStore
- elasticsearch - 如果使用 field.keyword,弹性搜索词查询不起作用
- python - 在同时执行当前文件代码的同时运行另一个 python 文件
- javascript - useContext 返回不同的 TypeError 取决于导航器 Firefox 或 Chrome
- ruby-on-rails - Nokogiri gem build error failed to build gem native extension on WSL with RVM
- java - Gradle Test Executor 10. 执行测试失败
- php - 如何使用搜索框筛选 SQL 生成的表?
- c++ - 如何在 C++ 中设置生成随机数的最小范围?
- wordpress - 从编辑个人资料页面重定向