标签: dapper

为什么我不能在 C# 中将“this”设置为值?

我正在使用 Dapper.net 扩展,我希望能够检索照片对象并将“this”设置为它,而不必单独设置每个属性。实现这一目标的最佳方法是什么?在下面的代码中,它说我无法分配给“this”,因为它是只读的。

public class Photo
{
    public Int32 PhotoId { get; set; }
    public Guid ObjectKey { get; set; }
    public Int16 Width { get; set; }
    public Int16 Height { get; set; }
    public EntityObjectStatus ObjectStatus { get; set; }
    public PhotoObjectType PhotoType { get; set; }
    public PhotoFormat2 ImageFormat { get; set; }
    public Int32 CategoryId { get; set; }

    public Photo(int pPhotoId)
    {
        Load(pPhotoId);
    }

    public void Load(int pPhotoId)
    {
        using (SqlConnection conn = new SqlConnection(Settings.Conn)) …
Run Code Online (Sandbox Code Playgroud)

c# dapper dapper-extensions

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

使用 DateTime 类型参数的 Dapper 查询速度慢?

例如1

string sql="select * from A where time>=:begin_time and time<=:end_time";

DateTime bt = new DateTime(2013, 04, 19);
DateTime et = new DateTime(2013, 04, 20, 15, 0, 0);
conn.Query<Object>(sql,new {begin_time=bt,end_time=et}).ToList()
Run Code Online (Sandbox Code Playgroud)

查询速度慢,时间为00:00:02.2142132


例如2

string sql="select * from A where time>=to_date(:begin_time,'yyyy-mm-dd      hh24:mi:ss') and time<to_date=(:end_time,'yyyy-mm-dd hh24:mi:ss')";

conn.Query<Object>(sql,new {begin_time="2013-04-19 0:00:00",end_time="2013-04-20 15:00:00"}).ToList()
Run Code Online (Sandbox Code Playgroud)

查询速度很快,时间是00:00:00.4604229


以下是一个新的测试用例。数据库中的所有测试记录数为 39。

group1:使用 Oracle.ManagedDataAccess

测试1:00:00:01.9456767。使用 dapper 并且 datetime 是 datetime 类型(eg1. :begin_time)

测试2:00:00:00.6667549。使用 dapper 并且 datetime 是字符串类型(例如2.to_date(:begin_time,format) )

测试3:00:00:01.8552286。使用 ado.net/OracleCommand/OracleDataAdapter 并且 datetime 是 datetime 类型(eg1. :begin_time)

测试4:00:00:00.0592419。使用 ado.net/OracleCommand/OracleDataAdapter 并且日期时间是字符串类型(例如2.to_date(:begin_time,format))


group2:使用 System.Data.OracleClient

测试5:00:00:00.0184799。使用 dapper …

oracle parameterized dapper

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

如何从 Dapper(使用 Npgsql)调用具有混合大小写名称的存储过程?

来自 NuGet,我正在使用

...\packages\Npgsql.2.2.5\lib\net45\Npgsql.dll

...\packages\Dapper.1.42\lib\net45\Dapper.dll

在 PostgreSQL 中调用存储过程时,我需要将过程名称的大小写保留为

var x = cnn.Query<icd9>("GetDxLibrary", commandType: CommandType.StoredProcedure);
Run Code Online (Sandbox Code Playgroud)

我收到运行时错误:

Npgsql.dll 中发生“Npgsql.NpgsqlException”类型的未处理异常

附加信息:错误:42883:函数 getdxlibrary() 不存在。

如果 PostgreSQL 中的函数重命名为getdxlibrary(),一切顺利。

如何在 Dapper 中调用大小写混合名称的过程?

TIA

postgresql stored-procedures npgsql dapper

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

像 DataAdapter 这样的 Dapper 命令

拜托,我可以将此方法转换为使用 Dapper 吗?

  • “BuscarUltimasLeituras”是一个程序
  • “@Last”是过程的参数(int)

public DataTable GetLeituras ( int ultimas )
    {
        DataTable listaLeiturasRomaneio = new DataTable();
        try
        {
            _sqlConnection.Open();

            _sqlCommand = new SqlCommand();
            _sqlCommand.Connection = _sqlConnection;
            _sqlCommand.CommandText = "BuscarUltimasLeituras";
            _sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
            _sqlCommand.Parameters.Add("@Last", SqlDbType.Int).Value = ultimas;
            _sqlAdapter = new SqlDataAdapter(_sqlCommand);
            _sqlAdapter.Fill(listaLeiturasRomaneio);
        }
        catch ( SqlException )
        {
            listaLeiturasRomaneio = null;
        }
        finally
        {
            _sqlConnection.Close();
        }
        return listaLeiturasRomaneio;
    }
Run Code Online (Sandbox Code Playgroud)

c# stored-procedures sqldataadapter dapper

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

使用泛型的 Dapper 方法

我正在尝试创建一个通用的简洁的“读取”方法。我想将返回类型作为参数传递给该方法。我不熟悉泛型,但有一个想法可以使用泛型来完成。我想它会看起来像这样?

public static T ListReader<T>(string SQL, ref T returnType, string DbName = "TEST")
{
    using (IDbConnection cmd = new SqlConnection(ConfigurationManager.ConnectionStrings[DbName].ConnectionString))
    {
        return cmd.Query<returnType>(SQL).ToList();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generics dapper

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

C# Dapper:从存储过程获取多个结果集?

SP响应图像

我的 SP 返回如下数据。当我使用 dapper QueryMultipleAsync 时,它似乎只选择第二个结果集,而当使用 queryAsync 时,它只选择第一个结果集。请建议。提前致谢。

col1    col2    col3
123      name   23.34

time    value   
25:17.0 123 
25:17.0 124 
25:17.0 543 
25:17.0 566 

col1    col2    col3
123     name1   23.34

time    value   
25:17.0 123 
25:17.0 124 
25:17.0 543 
25:17.0 566 
Run Code Online (Sandbox Code Playgroud)

c# dapper

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

Entity Framework 6 vs Dapper vs 存储过程 vs SQL Server 中的请求

我在我的项目中使用带有 LINQ 和 SQL Server 的 EF 很长时间了。

我正在寻找一种方法来提高我对数据库的请求的性能。我读了很多关于 Dapper 和程序的文章,它比 EF 快。我将 Dapper 添加到项目中,我添加了程序......但我的测试显示出奇怪的结果。EF 和 Dapper 以及存储过程的结果几乎相同——没有任何好处。

首先,我检查了一个有很多 Join 的请求。我在 Dapper、Procedure 和 EF 之间得到了几乎相同的结果。然后我决定用一张没有关系的简单表做一个测试。

我有表格邮政编码。有 43200 条记录。

邮政编码表

我使用 EF、Dapper、存储过程和 SQL Server 中的请求对 1 000 条记录、10 000 条记录和 43200 条记录进行了测试。

小巧玲珑

string query =
            "SELECT TOP (43200) [Zip]\r\n      ,[City]\r\n      ,[State]\r\n      ,[Latitude]\r\n      ,[Longitude]\r\n      ,[TimeZone]\r\n      ,[DST]\r\n  FROM [dbo].[ZipCodes]";

using (IDbConnection connection = new SqlConnection(_connectionString))
{
    var result = connection.QueryAsync<ZipCodes>(query).Result.ToList();
    return result;
}
Run Code Online (Sandbox Code Playgroud)

英孚

var zip = db.ZipCodes.AsNoTracking().Take(43200).ToList();
Run Code Online (Sandbox Code Playgroud)

存储过程

ALTER PROCEDURE [dbo].[ZIPTest] …
Run Code Online (Sandbox Code Playgroud)

linq database sql-server entity-framework dapper

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

在 .Net Core API 中使用 Dapper 选择 Count(*) 查询返回不正确的值

我正在尝试使用 Dapper 在 Sql Server 中执行选择计数查询。当配置文件不存在时,预期响应应为 0。当我在 SSMS 中执行查询时,它会正确返回,但在使用 Dapper 的 API 中,它会返回 1。知道为什么会发生这种情况吗?

public IActionResult GetProfileCount(string profileId)
    {
        int profileCount = 0;
        using (IDbConnection db = new SqlConnection(connectionString))
        {
            try
            {
                profileCount = db.Query($"select count(*) from Profile where Id='{profileId}'").Count();
            }
            catch(Exception ex)
            {
                Console.WriteLine($"Error retrieving count for ProfileId: {profileId}", ex.Message);
            }
        }

        return Ok(profileCount);
    }
Run Code Online (Sandbox Code Playgroud)

dapper asp.net-core

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

如何使用 SqlKata (Dapper) 从多列中获取值作为 IEnumerable

我正在使用 SQL,并且在我的数据库中有一个如下所示的表。

Id   Remark1    Remark2    Remark3    Remark4    
------------------------------------------------
1    AAA        BBB        CCC        DDD      
2    EEE        FFF        GGG        HHH   
Run Code Online (Sandbox Code Playgroud)

如何使用以下 DTO从Remark*列中获取所有值IEnumerable<string>

class MyDTO
{
   public int ID { get; }
   public IEnumerable<string> Remarks { get; }
}
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用 SqlKata (Dapper),您也可以在回答时使用它。

c# sql dapper sqlkata

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

C# Dapper UPPER 函数

我正在使用 Dapper C# .Net Core 6.0 MVC

询问 ;

 var query = $"SELECT d.Id,d.CityId,d.CountryId,UPPER(d.Name) FROM District as d INNER JOIN City as c ON d.CityId = c.Id Where c.Id={Convert.ToInt32(id)}";
 var result = conn.Query<CityDto>(query).ToList();
Run Code Online (Sandbox Code Playgroud)

数据获取但d.Name值为空

当我在 SQL Server 中执行它时它起作用

我的错误在哪里?

dapper

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