问题标签 [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 插入和多重映射
我正在尝试做的是能够使用复杂的对象进行检索和写回数据库。
例如,我有两个班级
我使用下面的方法填充父对象
我的问题现在我有我的填充对象,说我想对 Parent 进行更改,包括从 Parent.Children 添加/更新/删除值
这是我第一次使用更新方法,但我认识到这里存在一些问题,例如根据子 ID 是否为零来确定更新或插入,以及这有点冗长。
有没有办法,我是否缺少 Dapper 或 Dapper.Contrib 的某些功能,这些功能将提供帮助方法来简化此过程?
c# - 根据场景插入应该映射到不同数据库表的对象
我有一个对象,其属性名称与数据库表中的字段名称完全一致,但我不确定如何插入它。唯一不同的是数据库表名。所以它是一个具有不同模型/映射表名称的对象,但我希望将它插入到名称与模型不同的表中。我试过这个:
例如在哪里
对象是FooBarObj
,属性是int Id, string Foo, string Bar
并且DBInformation
具有字段名称:Id, Foo, and Bar
但表没有被调用FooBarObj
,它被调用DBInformation
。
我怎样才能插入这样的东西?我正在使用 Dapper
编辑:
FooBar 模型可以有两个表属性吗?
例如[Table("DBInformation")]
和[Table("FooBar")]
。
我有一个奇怪的边缘情况,如果发生这种情况,我想插入 FooBar,如果发生另一种情况,插入 DBInformation。这就是我目前面临的问题,因此这就是为什么我不能只添加属性并解决这个问题。
c# - Dapper UpdateAsync ignore column
I am trying to update with Dapper.Contrib this table:
I don't want to update the CreateUserID column because it is an update method so that I want to ignore this column while calling the Dapper - Update.Async(entity) method.
I tried using [NotMapped] and [UpdateIgnore] attributes but no help.
Note: I still want this column to be passed on insert operations, therefore, [Computed] and [Write(false)] is not appropriate.
Can someone help me figure out how to ignore this column when updating the table in the database?
c# - 如何从 C# 中的父对象访问子对象字段?
我使用 Dapper.net 作为 ORM。我有一个名为 BusinessObject 的抽象类,它由代表数据库中表的其他类继承,例如 SubContractorJob。
我在 BusinessObject 类上有一个名为“Persist”的方法,它将记录保存到数据库中:
目前,如您所见,Persist 方法将对象作为输入。
这意味着当我从 BusinessObject 类继承时,我必须从我的子对象中这样调用它:
我的问题是:当我已经在 s(子对象)的上下文中调用该方法时,如何在不传递“s”的情况下完成这项工作?
我确实设置了一个接口(IDBObject),因此始终保证子对象具有 Id 字段。
我试过这个:
但是得到了这个错误:
谢谢你的帮助!
dapper - 有没有办法使用 Dapper 的一些 .Insert 扩展方法将属性映射到列名?
我对这门课有以下挑战:
数据库中对应的数据表有as字段:
Id (int, not null)
Last-Name (nvarchar(80),null)
所以我需要映射MyClass.LastName
并MyClasses.Last-Name
度过一段地狱般的时光......
当我编写自定义插入查询时,一切正常,但我想使用 Dapper 扩展包之一的 .Insert 语句。
我尝试了 Dapper.Contrib,但这忽略了我使用 Dapper.FluentMap 或使用 Dapper 本身的内置方法创建的映射Dapper.SetTypeMap
。
我尝试了 Dapper.FastCrud,但我无法弄清楚如何为其配置映射,尽管这个 API 看起来很有希望。
任何人?
orm - DapperContrib - 使用抽象类更新
我有一个这样的低音课:
然后我有
现在我想编写一些通用方法来使用 Dapper.Contrib 处理更新
//某处的某个类..
现在我想更新对象:
Dapper.Contrib 给了我这个信息:
{"实体必须至少有一个 [Key] 或 [ExplicitKey] 属性"}
我无法找到使用抽象基类的示例。我想也许 UpdateProposal 的类型应该是 Document 但我得到了相同的消息。
谢谢您的帮助。我相信这很简单。
编辑:我找到了一半的答案。我开始只使用一个类(没有抽象)进行测试并得到了同样的错误。经过进一步研究:
Dapper.SimpleCRUD 插入/更新/获取失败并显示消息“实体必须具有至少一个 [Key] 属性”
我发现使用 Key [Dapper.Contrib.Extensions.Key] 可以解决这个问题。似乎来自 ystem.ComponentModel.DataAnnotations 的 Key 也应该有效?
如果不是这样,那让我有点难过,因为任何想要使用 ORM 的服务都必须了解 Dapper,而我希望避免使用映射器。
不过,现在要尝试再次分解班级,看看是否至少可以解决眼前的问题。
M。
c# - 如何使用接受 Dapper.Contrib 方法的集合?
Dapper.Contrib (https://github.com/StackExchange/Dapper/tree/master/Dapper.Contrib)声明他们有几种接受 IEnumerable 列表的方法,但是我似乎找不到任何这些方法。使用 .NET Core 2,这是过时的 readme.md 还是与 .NET Core 不兼容?
缺少方法:
我已经用普通的 Dapper 和一些 SQL 让它工作了,但我只是对这些方法的位置感兴趣。
dapper - 使用 Dapper.Contrib 存储过程
我是 Dapper 的新手,我想使用 Dapper.Contrib。是否有任何方法可以将存储过程与 Dapper.Contrib 方法一起使用。
例如 Dapper.Contrib 的方法是connection.GetAll<Invoice>().ToList();
. 我想在这个扩展方法中调用存储过程。
c# - Dapper.Contrib AS 实体,为什么会失败?
我计划将 Contrib 与 dapper 一起使用,使我在桌面应用程序中的类看起来像这样
那么任何 Concept 类都将继承自 DB 类;像这样
使用测试类
这个样本总是失败并给了我
“)”附近的 SQL 逻辑错误:语法错误
但是当我Insert()
在子类中实现方法时效果很好!问题是:我的代码包含很多类,重写所有 CUD 操作是如此令人不安,有什么想法可以用更少的代码解决这个问题吗?
c# - Dapper.Contrib - InsertAsync 无法插入 HIERARCHYID 键
我们的项目中有一个主键为 HIERARCHYID 类型的表:
以及与 Dapper 查询一起使用的相应类:
对象被创建并初始化,InsertAsync 被调用,并立即以“无法将 Null 插入 Id 字段”而失败,即使调试显示 Id 不为空并且在我们尝试插入的位置具有正确的值。
[ExplicitKey] 属性是专门为修复此类情况而添加的,但看起来......不是吗?我还能在这里错过什么?