Tag: dapper

使用Dapper将字符串映射到guid

我正在使用Dapper来敲除一些需要访问PostgreSQL数据库的负载测试工具。 此特定版本的PostgreSQL本身不支持GUID,因此GUID值存储为32个字符串。 使用someGuid.ToString(“N”)将值转换为字符串,可以使用new Guid(stringValueFromColumn)转换回Guid。 我的问题是如何让Dapper读取字符串并将它们转换回Guids? 我尝试修改DbType映射,但这不起作用。

小巧玲珑。 映射到SQL列,列名称中包含空格

我已经设法在今天作为小沙盒/ POC项目获得了一些东西,但似乎在一个问题上让我头脑发热…… 题: 有没有办法让dapper映射到带有空格的SQL列名。 作为我的结果集,我有一些这样的效果。 例如: SELECT 001 AS [Col 1], 901 AS [Col 2], 00454345345345435349 AS [Col 3], 03453453453454353458 AS [Col 4] FROM [Some Schema].[Some Table] 我的class级看起来像这样 public class ClassA { public string Col1 { get; set; } public string Col2 { get; set; } ///… etc } 我的实现目前看起来像这样 public Tuple<IList, IList> QueryMultiple(object parameters) […]

Dapper.NET和IQueryable

是否有计划使Dapper.net与IQueryable接口兼容? 如果没有,将Dapper与“表达式树”filter一起使用的解决方法是什么?

dapper -multi-mapping:flat sql返回嵌套对象

我有一个包含地址对象的公司。 SQL返回是平的,我想让Query 加载所有对象。 cnn.Query(“Sproc”, (org,mail,phy) => { org.Mailing = mail; org.Physical = phy; return org; }, new { ListOfPartyId = stringList }, null, true, commandTimeout: null, commandType: CommandType.StoredProcedure, splitOn: “MailingId,PhyscialId”).ToList(); 我不确定我的SplitOn是否正确。 我收到的消息是: 使用多映射API时,如果您具有Id参数名称以外的键,请确保设置splitOn参数:splitOn 建议会很棒。 Test.cs中的示例不是代码要求的查询参数。 这些需要更新

如何创建一个动态确定的属性名称的匿名对象?

给定一个值数组,我想创建一个具有基于这些值的属性的匿名对象。 属性名称只是”pN” ,其中N是数组中值的索引。 例如,给定 object[] values = { 123, “foo” }; 我想创建一个匿名对象 new { p0 = 123, p1 = “foo” }; 我能想到的唯一方法就是使用一个switch或链接到合理数量的参数来支持,但我想知道是否有更优雅的方法来做到这一点: object[] parameterValues = new object[] { 123, “foo” }; dynamic values = null; switch (parameterValues.Length) { case 1: values = new { p0 = parameterValues[0] }; break; case 2: values = new { […]

unit testingDapper与内联查询

我知道有几个类似于我的问题。 Dapper:unit testingSQL查询 测试Dapper查询 但我不认为上述两个问题都有明确的答案符合我的要求。 现在我开发了一个新的WebAPI项目,并在WebAPI项目和DataAccess技术之间进行了划分。 我没有问题测试Controller for WebAPI因为我可以模拟数据访问类。 但对于DataAccess类来说,这是一个不同的故事,因为我在其中使用Dapper内联查询,我有点混淆我如何使用unit testing来测试它。 我问了一些朋友,他们更喜欢做集成测试而不是unit testing。 我想知道的是,是否可以对使用Dapper和Inline查询的DataAccess类进行unit testing。 假设我有一个这样的类(这是一个通用的存储库类,因为很多代码都有类似的查询区别于表名和字段) public abstract class Repository : SyncTwoWayXI, IRepository where T : IDatabaseTable { public virtual IResult GetItem(String accountName, long id) { if (id p.CustomAttributes.All(a => a.AttributeType != typeof(SqlMapperExtensions.DapperIgnore))).Select(p => p.Name))); builder.From(typeof(T).Name); builder.Where(“id = @id”, new { id }); builder.Where(“accountID = […]

无法在Dapper中使用多映射

和Dapper一起玩,我对目前的结果非常满意 – 很有趣! 但现在,我的下一个场景是从两个表中读取数据 – Student和Address表。 Student表具有StudentID (INT IDENTITY)的主键, Address具有AddressID (INT IDENTITY) 。 Student还有一个名为AddressID的FK链接到Address表中。 我的想法是创建两个类,每个表一个,具有我感兴趣的属性。另外,我将一个类型为Address的PrimaryAddress属性放到我在C#中的Student类中。 然后我尝试在单个查询中检索学生和地址数据 – 我模仿Github页面上给出的样本: var data = connection.Query(sql, (post, user) => { post.Owner = user; }); var post = data.First(); 在这里,检索Post和User ,并将post的所有者设置为用户 – 返回的类型是Post -correct? 所以在我的代码中,我为通用的Query扩展方法定义了两个参数 – 一个Student作为第一个应该返回的,一个Address作为第二个,它将存储在student实例上: var student = _conn.Query (“SELECT s.*, a.* FROM dbo.Student s INNER JOIN dbo.Address […]

将枚举存储为数据库中的字符串

我正在试验小巧玲珑。 我有一个具有枚举的类,值存储为数据库中的字符串。 这适用于使用GenericEnumMapper的FluentNHibernate 是否可以用Dapper做同样的事情?

从一行中精心设计多个对象

我有一行来自数据库 select “John” Name, “Male” Gender, 20 Age, “Rex” PetName, “Male” PetGender, 5 PetAge // … many more … 使用Dapper,我想将这一行拉成两个对象: class Person { public string Name { get; set; } public string Gender { get; set; } public int Age { get; set; } // … many more … } class Pet { public string […]

Dapper with Attributes mapping

我尝试使用列属性映射我的Id字段,但由于某种原因,这似乎不起作用,我无法弄清楚原因。 我建立了一个测试项目,以展示我正在尝试的内容。 首先,我得到了我的2个实体: 实体表1 using System.Data.Linq.Mapping; namespace DapperTestProj { public class Table1 { [Column(Name = “Table1Id”)] public int Id { get; set; } public string Column1 { get; set; } public string Column2 { get; set; } public Table2 Table2 { get; set; } public Table1() { Table2 = new Table2(); } } } 和实体表2 […]