问题标签 [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
并且Dapper.Contrib
可以轻松地执行常规数据库操作,这非常棒。但是,自从引入Polly
为我们的某些操作添加重试策略以来,由于需要在执行重试之前检查记录的存在,我一直无法找到一种方法来保持同样的简单性。
这是我们当前如何执行插入的简化示例:
Payment
我们的领域模型在哪里,PaymentDao
是我们的数据访问对象。
实际上,我们在服务中确实有Insert
明确检查重复项的调用逻辑,但这被重试策略否定了。这意味着自推出以来Polly
,我们看到插入了少量重复付款。
我可以通过执行以下操作来解决此问题:
但是,如您所见,它变得相当冗长。有没有更简单的方法来做到这一点?
asp.net - Dapper.Contrib 方法对 IDbConnection 对象不可用
我正在尝试使用Dapper.Contrib来扩展IDbConnection
接口的功能,其中包括该.insert()
方法。
为此,我遵循了此处和此处的一些简短而分散的文档。简而言之,我曾经在我的项目NuGet
中添加Dapper
和Dapper.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 类。
可能值得注意的是,using
Dapper 和 Dapper.Contrib 的行是灰色的...
另外,当然,我有一个用于 TEST Entity 的(非常简约的)模型类,包含一个参数 ,TEST_COLUMN
用 注释[Key]
。
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
c# - Dapper.Contrib + MS Access:错误 - 在 SQL 语句结束后发现的字符
我将 Dapper ORM 与 Contrib 包一起使用。查询完美运行,SELECT
但我的问题是当我尝试INSERT
数据时。
Visual Studio 2017 返回此消息:
SQL 语句结束后找到的字符
使用 Dapper(没有 Dapper.Contrib)执行的基本查询工作正常。但我需要数据库中最后插入的 id。
在 MS Access 2007 数据库中插入数据的函数代码:
客户类:
c# - 使用 Dapper.Contrib 继承
当尝试在属性位于继承对象中的对象中使用 Contrib 的 CRUD 方法时,我得到一个
实体必须至少有一个 [Key] 或 [ExplicitKey] 属性
错误。这是我的对象的简化版本:
和这个
执行时出现错误:
如果我删除继承并将 Delete() 方法移动到 Product 对象中,它可以完美地工作。
有任何想法吗?
dapper-contrib - Dapper.Contrib 支持复合主键
大家好,我有一个简短的问题要问:Dapper.Contrib 中是否支持复合主键,如果没有,是否有人有我可以使用的实现?
谢谢 !
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,但仍然是同样的错误。
请在这里提出不正确的建议。
问候, 雅利安
c# - 如何避免使用 Dapper.Contrib 在后续更新调用中更新列?
我有一个Media
与我的 DB 表主要是一对一的课程Media
。我正在使用 Dapper.Contrib 的Update
SqlConnection
扩展方法通过传入一个Media
对象来更新表。
我的表(以及相应的类属性)的列之一是OwnerID
,它是第一个创建此媒体的用户的 ID。它应该写在第一次插入时(这也是使用 Dapper.Contrib 的Insert
扩展方法完成的),然后更新不应该改变它。是否可以仅使用 Dapper.Contrib 来完成此任务?如果可能的话,我不想OwnerID
在进行更新之前阅读该列,以确保OwnerID
对象属性相同。
该[Computed]
属性似乎从两者中都省略了这一列,Update
这里的Insert
描述似乎表明该属性应该只省略写入更新的列,这让我希望我只是不正确地使用了该库。
c# - C# 类型参数仅读取为基类
我有一个基类,我将调用 TypeBase 和几个从它派生的类,因为笑声让我们称它们为 TypeImage 和 TypeAsset。以下是代码中发生的情况:
所以在 MethodDoingStuff 我们有这样的东西:
因此,Repository 调用的方法 sig 如下所示:
问题出现在cn.Get<T>(id)
对 Dapper Extension 的调用中,它查找的表是基于该类型参数的,它当然将其视为 TypeBase。相关的表格数据当然是在表格 TypeImage 或 TypeAsset 或其他表格中。我的自由主要在于存储库:我可以更改方法的工作方式或引入重载。我也可以更改传递给 MethodDoingStuff() 的参数,但由于各种原因不能真正更改 MethodDoingStuff 本身。