问题标签 [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.

0 投票
1 回答
4631 浏览

c# - 当主键列不是标识列时如何插入数据?

我正在尝试使用 Dapper.Contrib 在主键列不是标识列的表中插入数据。

使用此脚本创建数据库表:

这是 C# 类:

像这样插入数据时:

我收到以下错误:

无法将值 NULL 插入到列“Id”、表“FooDatabase.dbo.Foos”中;列不允许空值。插入失败。

按照惯例,Dapper 正确地假定这Id是主键,但它错误地假定它是一个标识列。如何表明它不是标识列?

0 投票
1 回答
1120 浏览

sql-server - Dapper 是否在 Linq 操作之前从数据库中请求一个完整的对象?

一段时间以来,我一直对 Dapper(或其他 ORM)在与 LINQ 结合使用时如何处理对象检索感到好奇。

如果我有这样的课程:

我构造了一个这样的查询:

我很好奇,如果在后台,整个记录集被拉入包括所有其他列(可能包含非常大的 varchars),或者 Dapper 是否从这个查询中理解只是拉入我从 sql db 请求的列?我意识到这有点新奇,但我想更好地理解 Dapper/LINQ 交互。

此处发布了一个类似的问题:selection-specific-columns-using-linq-what-gets-transferred,但我不确定是否已完全回答。海报有 2 个问题,也没有使用我通常喜欢的 lambda 表达式。

这个问题的答案会让我大吃一惊(并且很可能会改变我的编码方式,因为我一直很谨慎,并且觉得我通过显式 sql 编写了太多代码)。

0 投票
1 回答
800 浏览

sql-update - 使用 Dapper.Contrib 更新,以及具有特殊辅助属性的类

我是新手DapperDapper.Contrib。有一个这样的类,并且数据库中有一个同名的表:

我需要将此类的整个列表更新到数据库。我用:

但是运行的时候报错:

如何解决这个问题?

0 投票
1 回答
2596 浏览

c# - Dapper 异常 - 获取仅支持具有 [Key] 属性的实体,但定义了 [key]

如果 BO 被标记为带有 [key] 的密钥,为什么 dapper 会出现错误?

调用引发异常的 dapper

该表tblWebReadyToWorkQualifications在 上有一个主键TeacherID

错误:在 Dapper.Contrib.Extensions.SqlMapperExtensions.Get[T](IDbConnection connection, Object id, IDbTransaction transaction, Nullable`1 commandTimeout) in d:\egna projekt\dapper-dot-net\Dapper.Contrib\SqlMapperExtensions.cs :第 128 行\r\n

0 投票
1 回答
1314 浏览

.net - Dapper.Contrib - 如何获取更改跟踪值?

我正在开发一个使用 Dapper 作为 ORM 的 .Net 项目。EF 并不是一个真正的选择,因为我们需要 DB/schema 在运行时具有一定的灵活性。

使用 Dapper.Contrib,我们可以使用“更改跟踪”功能来优化写入数据库的内容。我们真正想要的是能够访问这些信息(更改了什么)并将其写入“更改历史记录”日志。

Dapper.Contrib 中似乎没有很多关于此的文档。有人对如何做到这一点有任何建议吗?谢谢。

0 投票
1 回答
173 浏览

npgsql - Dapper.contrib 插入 - 无法使用 [] 将索引应用于“对象”类型的表达式

使用:
.NET Core 1.1
Dapper.Contrib
Npgsql

在 Postgresql 9.6 上

我正在尝试使用.InsertAsync扩展方法但出现错误:
Cannot apply indexing with [] to an expression of type 'object'

如果我使用普通.Insert方法,一切正常。
可能是什么原因?

0 投票
1 回答
4887 浏览

c# - Dapper.Contrib -“仅支持具有单个 [Key] 或 [ExplicitKey] 的实体”

我在 MVC5 c# 环境中使用Dapper和,有时(!)当我部署生产站点时,我收到错误说明:Dapper.Contrib

GetAll<T>仅支持在Dapper.Contrib.Extensions.SqlMapperExtensions.GetAllAsync [T](IDbConnection connection, IDbTransaction事务,Nullable`1 commandTimeout)

不过,这种情况只发生在大约三分之一的部署中。

我怀疑它会以某种方式Dapper.Contrib自动注意到我的主键,因为它被命名为"Id",但我已经用[ExplicitKey](它是一个 GUID)装饰了它,也许这些属性会发生冲突。也许这是完全不同的东西......

除了可能重命名我的主键之外,关于如何解决这个问题的任何想法?

来自相关模型的一块:

0 投票
2 回答
741 浏览

c# - 使用 Dapper.Contrib 将枚举作为字符串插入

我刚刚开始使用 Dapper.Contrib 来帮助我进行插入和获取,但是由于我的枚举作为字符串存储在数据库中(出于多种原因),我在插入时遇到了问题。Dapper 在读取时与字符串枚举无缝协作,但插入总是会将序数值放入数据库中。

我已经为此阅读了许多向 Dapper 提出的建议,并且打开了很多问题,但没有找到可行的解决方案。我的简化类如下所示:

我期待我可以配置 Dapper.Contrib 以使用枚举名称而不是序数值发出插入,这样下面的代码就会神奇地工作并在 varchar(20) 数据库字段性别中插入“男性”:

有没有办法添加自定义映射typeof(Gender)

或者,更好的是,Dapper.Contrib 是否提供了一种配置以使其使用枚举名称而不是它们的序数值?

0 投票
0 回答
312 浏览

git - Dapper.Contrib [Computed] 属性不允许在插入时通过属性

首先让我说,这绝不是批评。Dapper 是一个令人难以置信的工具,我非常乐意使用它。Dapper.Contrib 也不例外。

也许我误解了[Computed]属性的目的。但文件明确指出:

...这个属性是计算出来的,不应该是更新的一部分

这使我相信其他操作SELECT/INSERT仍然有效。这实际上是真实的SELECT

但是,在查看源代码时,很明显它也忽略了INSERT语句。

您可以在此提交中看到代码已明显更改为忽略具有该属性的[Computed]属性。但是提交的标题具有误导性,它似乎意味着允许INSERT.

我想我的问题是,我们是否正在查看过时文档的实例?或者,是否应该通过 on 推送计算属性INSERT,这是一个错误的提交?

0 投票
2 回答
1196 浏览

c# - 将复杂对象从 C# 插入 SQL Server,无需实体框架和数据表

如何在不使用实体框架和数据表的情况下将 C# 中的复杂对象插入 SQL Server(我考虑过 Dapper.Contrib,但它仅适用于实体)。

我现在正在使用存储过程和 Dapper,但我只能插入一个对象,而且 - 只能使用动态参数,所以它不是我想要的。

例如:

然后插入。但我需要再做 2 次插入。

例如 - 我想在存储过程中插入 3 个复杂对象,然后为每个对象执行 3 个存储过程

谢谢。