小编wls*_*ill的帖子

当结果集有未映射的列时,如何使Dapper.NET抛出?

使用下面的示例代码作为上下文...当我运行此查询时,我将'Id'字段作为默认值返回(对于int为0).我想告诉dapper以一种方式运行,如果结果集中有一列没有映射到我的结果对象上的属性,它将抛出异常.(我知道问题只是我需要在SQL查询中删除额外的'd',但我有兴趣让它更明确地暴露自己)

我一直无法找到关于这个主题的任何内容.如果Dapper可以做到这一点,请告诉我.

提前谢谢(除了这个问题,对于没有采取过任何措施的人来说,Dapper真的是切片面包以来最棒的东西!).

class CustomerRecord
{
    public int Id { get; set; }
    public string Name { get; set; }
}

CustomerRecord[] GetCustomerRecords()
{
    CustomerRecord[] ret;
    var sql = @"SELECT 
                 CustomerRecordId AS Idd, 
                 CustomerName as Name
                 FROM CustomerRecord";

    using (var connection = new SqlConnection(this.connectionString))
    {
        ret = connection.Query<CustomerRecord>(sql).ToArray();
    }

    return ret;
}
Run Code Online (Sandbox Code Playgroud)

dapper

12
推荐指数
1
解决办法
1571
查看次数

是否有一种在C#中声明方法名称的类型方式

我有一些反射代码,我希望有一种方法将方法名称绑定到类型而不是通过字符串声明.

我有这个界面:

interface IDoStuff<T> {
    void Do(T stuff);
}
Run Code Online (Sandbox Code Playgroud)

然后我有这个代码:

object stuff = GotThisFromSomewhereElse();
object doer = GotThisFromSomewhereElseAlso();
var doMethodInfo = doer.GetType().GetMethod("Do");
doMethodInfo.Invoke(doer, new[] { stuff });
Run Code Online (Sandbox Code Playgroud)

问题是我不能简单地进行安全演员并调用它,因为它是通用的,我实际上并不知道T是什么类型.

这工作正常,但是当我重命名方法时,我必须更新它,我并不过分担心,因为我有测试来确认所有这些工作,以防止不知道它改变.

它真的很丑陋,我很好奇是否有一些光滑的方式来进行这种打字,因此如果我改变它将由ReSharper重命名.

我真的很喜欢这样的东西:

object stuff = GotThisFromSomewhereElse();
object doer = GotThisFromSomewhereElseAlso();
var doMethodInfo = doer.GetType().Methods.Do;
doMethodInfo.Invoke(doer, new[] { stuff });
Run Code Online (Sandbox Code Playgroud)

在此先感谢,如果这是C#中可能的事情,请告诉我.

.net c# reflection

2
推荐指数
1
解决办法
97
查看次数

标签 统计

.net ×1

c# ×1

dapper ×1

reflection ×1