问题标签 [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 回答
1071 浏览

c# - 如果实体不存在则插入它

我们一直在使用Dapper并且Dapper.Contrib可以轻松地执行常规数据库操作,这非常棒。但是,自从引入Polly为我们的某些操作添加重试策略以来,由于需要在执行重试之前检查记录的存在,我一直无法找到一种方法来保持同样的简单性。

这是我们当前如何执行插入的简化示例:

Payment我们的领域模型在哪里,PaymentDao是我们的数据访问对象。

实际上,我们在服务中确实有Insert明确检查重复项的调用逻辑,但这被重试策略否定了。这意味着自推出以来Polly,我们看到插入了少量重复付款。

我可以通过执行以下操作来解决此问题:

但是,如您所见,它变得相当冗长。有没有更简单的方法来做到这一点?

0 投票
1 回答
1563 浏览

asp.net - Dapper.Contrib 方法对 IDbConnection 对象不可用

我正在尝试使用Dapper.Contrib来扩展IDbConnection接口的功能,其中包括该.insert()方法。

为此,我遵循了此处此处的一些简短而分散的文档。简而言之,我曾经在我的项目NuGet中添加DapperDapper.Contrib,我已经在我的 Repository 类的顶部添加了using Dapper;using Dapper.Contrib;,我正在使用System.Data.SqlClient.SqlConnection()它来创建一个IDbConnection.

不过,我的连接对象没有可用的扩展方法。例如,当尝试使用该.insert()方法时,我收到以下消息:

'IDbConnection' C# 不包含'Insert' 的定义,并且找不到接受第一个类型参数的扩展方法'Insert'(您是否缺少 using 指令或程序集引用?)

这是在使用 Razor Pages 的 ASP.NET Core 2.0 项目中。
为了完整起见,您可以在下面找到 Repository 类。
可能值得注意的是,usingDapper 和 Dapper.Contrib 的行是灰色的...
另外,当然,我有一个用于 TEST Entity 的(非常简约的)模型类,包含一个参数 ,TEST_COLUMN用 注释[Key]

0 投票
2 回答
508 浏览

c# - Dapper.Contrib 和 MiniProfiler (for MySql) 集成问题

我正在尝试使用 MiniProfiler.Integrations.MySql 以及 Dapper.Contrib 扩展来分析发送到 MySql 服务器的 sql 查询。我正在使用我自己的 ConnectionFactory:

Dapper.Contrib 允许插入新记录,就像

ProfiledDbConnection被解释为SQLConnection,产生与 MySQL 不兼容的 SQLServer 语法:

寻求有关如何解决问题并使 MiniProfiler 正常工作的建议。

我正在使用(全部来自 Nuget):

Dapper:1.50.5
Dapper.Contrib:1.50.5 MiniProfiler
:3.2.0 MiniProfiler.Integrations.MySql
:1.0.1

0 投票
1 回答
284 浏览

c# - Dapper.Contrib + MS Access:错误 - 在 SQL 语句结束后发现的字符

我将 Dapper ORM 与 Contrib 包一起使用。查询完美运行,SELECT但我的问题是当我尝试INSERT数据时。

Visual Studio 2017 返回此消息:

SQL 语句结束后找到的字符

使用 Dapper(没有 Dapper.Contrib)执行的基本查询工作正常。但我需要数据库中最后插入的 id。

在 MS Access 2007 数据库中插入数据的函数代码:

客户类:

0 投票
1 回答
765 浏览

c# - 使用 Dapper.Contrib 继承

当尝试在属性位于继承对象中的对象中使用 Contrib 的 CRUD 方法时,我得到一个

实体必须至少有一个 [Key] 或 [ExplicitKey] 属性

错误。这是我的对象的简化版本:

和这个

执行时出现错误:

如果我删除继承并将 Delete() 方法移动到 Product 对象中,它可以完美地工作。

有任何想法吗?

0 投票
1 回答
1334 浏览

dapper-contrib - Dapper.Contrib 支持复合主键

大家好,我有一个简短的问题要问:Dapper.Contrib 中是否支持复合主键,如果没有,是否有人有我可以使用的实现?

谢谢 !

0 投票
1 回答
1182 浏览

mysql - Dapper 与 MySQL 和 ASP.NET CORE 2 - 插入模型失败

我将 ASP.NET CORE 2 与 MySQL 5.6.27、Dapper 1.50.2 和 Dapper.Contrib 1.50.0 一起使用。尝试使用模型执行基本插入操作时出现错误,但是如果我使用普通的 INSERT INTO SQL 查询,则操作成功。

这是我得到的错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'WHERE 1 = 0)、(SELECT NULL WHERE 1 = 0)、(SELECT NULL WHERE 1 = 0)、(SELECT NULL' 附近使用正确的语法

代码:

模型类

我尝试将 Dapper 和 Dapper.Contrib 更新到 1.50.5,但仍然是同样的错误。

请在这里提出不正确的建议。

问候, 雅利安

0 投票
1 回答
1000 浏览

c# - 如何避免使用 Dapper.Contrib 在后续更新调用中更新列?

我有一个Media与我的 DB 表主要是一对一的课程Media。我正在使用 Dapper.Contrib 的Update SqlConnection扩展方法通过传入一个Media对象来更新表。

我的表(以及相应的类属性)的列之一是OwnerID,它是第一个创建此媒体的用户的 ID。它应该写在第一次插入时(这也是使用 Dapper.Contrib 的Insert扩展方法完成的),然后更新不应该改变它。是否可以仅使用 Dapper.Contrib 来完成此任务?如果可能的话,我不想OwnerID在进行更新之前阅读该列,以确保OwnerID对象属性相同。

[Computed]属性似乎从两者中都省略了这一列,Update这里Insert描述似乎表明该属性应该只省略写入更新的列,这让我希望我只是不正确地使用了该库。

0 投票
1 回答
1032 浏览

c# - dapper.contrib postres 42P01 错误:关系“”不存在

使用 dapper.contrib,我不断收到错误:'42P01: relation "tblproduct" does not exist'.

我相信这是因为 postgresql 区分大小写。实体本身具有 的模式注释'[Table("tblProduct")]'

我找不到为什么生成的 sql 会使用小写的表名?我正在使用'SqlMapperExtensions.TableNameMapper'来强制案例,但这也不起作用。我错过了什么吗?谢谢


您可以尝试以下几行:

其中“hostname”是 postgresql 服务器的主机名(localhost),“port”是监听 postgresql 服务器的端口(5432),“postgres”是用户名,“dbname”是数据库名称

0 投票
2 回答
64 浏览

c# - C# 类型参数仅读取为基类

我有一个基类,我将调用 TypeBase 和几个从它派生的类,因为笑声让我们称它们为 TypeImage 和 TypeAsset。以下是代码中发生的情况:

所以在 MethodDoingStuff 我们有这样的东西:

因此,Repository 调用的方法 sig 如下所示:

问题出现在cn.Get<T>(id)对 Dapper Extension 的调用中,它查找的表是基于该类型参数的,它当然将其视为 TypeBase。相关的表格数据当然是在表格 TypeImage 或 TypeAsset 或其他表格中。我的自由主要在于存储库:我可以更改方法的工作方式或引入重载。我也可以更改传递给 MethodDoingStuff() 的参数,但由于各种原因不能真正更改 MethodDoingStuff 本身。