问题标签 [dapper-contrib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 通过 dapper [contrib] 在具有默认值的可空布尔值上检索空值时出现问题
这可能是一个边缘情况,也许我对默认值在这种情况下如何工作的理解是错误的。
我有一个问题,即使它在数据库中为空,以下属性始终返回为true。我猜这是由于默认值,但默认值不应该覆盖数据库中的内容 - 或者我认为。
部分模型..
Dapper.Contrib 调用的一部分..
我已经验证了有问题的数据库记录是null,但是“结果”将它返回为true。这是我的问题,dapper 还是它如何与可空类型的默认值一起工作?
dapper - Dapper.Contrib:如何通过过滤除 ID 以外的列来获取一行?
我的课如下:
使用 Dapper.Contrib,有没有办法通过而不是 Id来获取User
记录?Title
如果我像下面这样查询,它可以工作。但是,我想过滤Title
不是键的列。
c# - 使用 Linq Dapper 访问 foreach 中的单个字段
我正在使用 dapper,我想使用 Linq 来更新我正在尝试使用的一个表中名为 status 的单个字段。
我的班级如下:
但如果我使用像上面这样的 foreach,它就不起作用。我确信它应该正确更新项目,但我认为因为我正在查看我的 foreach 中的单个项目和更新中的列表,所以它没有正确更新。
我要做的就是将项目标记为已完成并准备好转移,我是通过状态列和一个 int 枚举来完成的。
也许我错过了我的主键是什么的声明?
编辑 2
当我使用主键的键声明时,我得到以下信息:
未处理的异常:System.AggregateException:发生一个或多个错误。(约束
编辑 3
我已经设置了我班级的密钥,但正如你所见,我的数据库上有自动增量,但它仍然崩溃。插入应该如何处理?
编辑 4
例如,我按如下方式插入数据库。这不应该工作吗?
我已经为可以正常工作的更新放置了标签键,但是当我尝试使用该键进行插入时,它并没有说约束错误,但更新有效。有人不知道我如何解决 Dapper contrib 中的插入和更新问题。
c# - Dapper contrib 获取具有 varchar 主键的数据
我有一个 varchar 键列。我正在尝试使用Get
Dapper contrib 的方法。我得到一个例外:
Get 仅支持具有 [Key] 或 [ExplicitKey] 属性的实体。
我的实体:
我的精巧方法
我什至尝试设置显式密钥,但仍然出现相同的错误。我究竟做错了什么?
c# - 将 DateTime 更新到数据库会引发 SqlTypeException - SqlDateTime 溢出
执行以下代码行:
抛出异常:
SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间(Contrib 中的第 465 行
var updated = connection.Execute(sb.ToString(), entityToUpdate, commandTimeout: commandTimeout, transaction: transaction);
)
我正在测试 Dapper.Contrib。
我在 SQL Server 中有一个表,它有几DateTime
列 - 其中一些允许 NULL 值。
我创建了一个具有属性的对象以匹配表中的列。对于DateTime
列,属性可以为空。
以下是其中一个属性的示例:
我首先使用IDbConnection.Query
方法从 SQL 表中获取记录。这运行正常并且对象映射很好。当我检查DateTime
它显示的可空值时null
。
然后,我对字符串参数进行简单更改并调用以下命令:
我该如何解决这个问题?
c# - Dapper 忽略属性运行时
有没有办法在运行时忽略属性映射。因为我不知道数据库是否有特定的列,我必须在插入之前检查它。如果数据库没有列,那么我想忽略这一特定属性。
更新:
这是我的插入代码
linq - 如何将 Dapper LINQ 与 TableDirect(无嵌入式 SQL)与 ORACLE 一起使用?
我尝试了 DapperExtensions、Dapper.Extensions.Linq 和 linq2dapper 无济于事。我会尝试Dapper.SimpleCRUD-with-Oracle。我可能会改用存储过程来解决。我想不使用TableDirect
嵌入式 SQL 语句。如何将 Dapper 和 Linq 与 a 一起使用TableDirect
?或者,如何在TableDirect
没有嵌入式 SQL 的情况下使用并过滤表?
以下是我的问题:
- 如果没有运行时错误,我无法创建 Predicate。
- 我需要缺少配置
- 我收到有关表的 ORA 错误说“列不正确,运行时错误”。
如何将 Dapper LINQ 与 TableDirect(无嵌入式 SQL)与 ORACLE 一起使用?
c# - 如何使用 Dapper.Contrib 正确“单一化”表名?
我有一个 .Net Core 3.1 控制台应用程序。
在 SQL Server 数据库中,我有单名的表,和我的 POCO 类一样,便于匹配和维护。
对于插入、更新和删除操作,我想使用Dapper.Contrib
库。但是当我在生成的 SQL 查询中运行插入函数 Dapper 时,表名复数形式。
SQL表“学生”:
C# 代码
在输出我得到一个例外:
对象名称“学生”无效。
我四处寻找解决方案,但找不到有效的示例。一般有两种建议:
使用数据注释。这个不适合我,因为有很多 POCO 对象是使用
Scaffold-DbContext
. 在开发过程中,我对数据库进行了更改,然后再次重新创建了 POCO。此操作会删除在生成的 POCO 类中所做的所有更改。SqlMapperExtensions
委托的使用:SqlMapperExtensions.TableNameMapper = (type) => { // do something here to pluralize the name of the type return type.Name; };
我不知道如何正确使用这个委托,以及在哪里放置它。我尝试了一段时间,但我确信我没有正确使用它:
在这行代码中,type.Name.Remove(type.Name.Length - 1, 1);
我尝试实现一个函数,该函数切断 type 名称中的最后一个字母Student
,假设 Dapper 将最后一个字母“s”添加到类的名称中,并在我的实现中将其删除。示例:Student => Students => Student(s) => Student
。
长话短说 - 我找不到如何实现一个将“单一化”我的表名的函数的解决方案。
我应该如何使用SqlMapperExtensions
或者可能有另一种方法可以在不更改 POCO 类的情况下“单一化”表名?
c# - 如何使用 Dapper.Contrib 通过唯一键获取实体?
我有一个对象,假设
TheId
是我的自动增量列,Name
是我的唯一键。保存用户时,我想通过以下方式检查其存在:
但是,由于我的 Key is not Name
but TheId
,我不能这样做。如果我将Name
属性设置为[KeyExplicit]
我想通过以下方式保存用户的时间:
这一次,dapper 期望TheId
我填充的属性,而不是让数据库自动增加。
所以,我想知道是否有一种优雅的方法可以在搜索数据库时将一些属性或属性标记为 dapper 考虑。我不想通过Guid
唯一键进行搜索。