标签: dapper

如何使用多个LIKE-s创建不会在dapper缓存中创建内存问题的查询?

我正在使用Dapper来处理sql数据库.我的网站项目中有一些搜索逻辑.

我的搜索获取字符串参数列表.

//filter is list of strings

var sql = new StringBuilder();
sql.Append("SELECT LibraryDocumentId FROM LibraryDocumentKeywords WHERE ");

sql.Append(string.Join("OR ", filter.Select(f => string.Format("LOWER(Keyword) LIKE '%{0}%'", f)).ToList()));

var isList = conn.Query<int>(sql.ToString()).ToList();
Run Code Online (Sandbox Code Playgroud)

实际上我不想使用这种生成动态SQL查询的方法,因为Dapper会缓存每一个查询.我宁愿通过参数传递过滤器.有人可以帮助我吗?任何的想法 ?

.net c# sql asp.net-mvc dapper

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

什么是AutoMapper的用途

我们可以使用其他类似于AutoMapper的工具吗?

automapper dapper

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

无法使用 Dapper 创建数据库并且数据库名称作为 @ 变量传入,为什么?

我有一个用 dapper 创建数据库的代码:

public static bool CreateDatabase(string connectionString, string databaseName)
{
    const string DATABASE_CREATE_QUERY = "CREATE DATABASE (@databaseName)";

    using (var connection = new SqlConnection(connectionString))
    {
        var affectedRows = connection.Execute(DATABASE_CREATE_QUERY, new { databaseName });

        return affectedRows > 0 ? true : false;
    }
}

CreateDatabase("Server=10.10.10.10;User ID=user;Password=password;MultipleActiveResultSets=true;", "TEST_DB");
Run Code Online (Sandbox Code Playgroud)

每次运行此方法时,都会出现错误:

“(”附近的语法不正确。

有踪迹:

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject …
Run Code Online (Sandbox Code Playgroud)

c# sql-server dapper

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

C#在标签中显示返回参数为十进制

我使用返回的参数来显示bin的重量.

这是我的SQL Server存储过程;

ALTER PROCEDURE [dbo].[SumScrapBinWeight]
    @ScrapBinNumber INT,
    @ScrapBinWeightSUM DECIMAL(8,2) OUTPUT
AS 
BEGIN
    SELECT @ScrapBinWeightSUM = SUM(CalculatedWeightLbs) 
    FROM ScrapData 
    WHERE ScrapBinNumber = @ScrapBinNumber
END
Run Code Online (Sandbox Code Playgroud)

这在SSMS中工作并返回预期值,当我在C#应用程序中调用它时,我收到错误

施放无效

在最后一行.这让我感到困惑,如果我Decimal改为Int,它不会抛出错误,但它不会显示我想要显示的小数.

using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MfgDataCollector"].ToString()))
{
    DynamicParameters param = new DynamicParameters();
    param.Add("@ScrapBinNumber", lbl_TicketNumber.Text);
    param.Add("@ScrapBinWeightSUM", dbType: DbType.Int32, direction: ParameterDirection.Output);

    conn.Execute("SumScrapBinWeight", param, commandType: CommandType.StoredProcedure);

    lbl_BinWeight.Text = param.Get<decimal>("@ScrapBinWeightSUM").ToString();
}
Run Code Online (Sandbox Code Playgroud)

我在哪里错了?

c# sql-server ssms dapper

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

Dapper QueryAsync,返回一个列表

我在 C# 中有这个任务,我想使用 dapper 在 MySql 中调用存储过程。

public async Task<List<StatItemListViewModel>> GetTable()
    {
        using (MySqlConnection connection = new MySqlConnection(Helper.CnnVal("SampleDB")))
        {
            var results =await connection.QueryAsync<List<StatItemListViewModel>>("Call MainResult_Statistic(@sDate, @eDate)", new { sDate = "2018-11-01", eDate = "2018-11-30" });

            return results.FirstOrDefault();
        }            
    }
Run Code Online (Sandbox Code Playgroud)

问题是它不返回任何东西。

有人能帮助我吗?

c# mysql dapper

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

ConfigurationManager错误:通用类型'configurationmanager &lt;T&gt;'需要1个类型参数

我在Visual Studio 2017中创建了一个新的项目空白Web应用程序。然后,我使用sqlserver创建数据库,并尝试使用dapper。我写了一个方法我在行中出错

 using (IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString))
        {
            return Ok(db.Query<Employee>
            ("Select * From ergaz").ToList());
        }
Run Code Online (Sandbox Code Playgroud)

我创建了一个web.config gile来放置代码

  <connectionStrings>
<add name="myConnectionString" connectionString="Data Source=aaaaaaa\SQLEXPRESS;Initial Catalog=APIDB;Integrated Security=True;" />
Run Code Online (Sandbox Code Playgroud)

但ConfigurationManager一词带有红色下划线并表示

使用通用类型'configurationmanager T'需要1个类型参数

我已经使用了System.Configuration。我搜索在解决方案中添加程序集引用,但是当我尝试添加它时,弹出窗口为空。 屏幕截图

c# dapper .net-core

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

Dapper 和 .net core 3

我是 .netcore 的新手,并尝试使用 dapper 进行一些数据库交互。dapper 不能与 .net core 3 一起使用吗?或者我做错了什么:X

我创建了一个新的.net项目:

dotnet new mvc
Run Code Online (Sandbox Code Playgroud)

尝试添加短小精悍

dotnet add package Dapper --version 2.0.30
Run Code Online (Sandbox Code Playgroud)

然后我得到错误:

info : Adding PackageReference for package 'Dapper' into project 
 C:\repos\dapper\dapper.csproj'.

info : Restoring packages for C:\repos\dapper\dapper.csproj...
error: Cycle detected.

error:   dapper -> Dapper (>= 2.0.30).

info : Package 'Dapper' is compatible with all the specified frameworks in project 'C:\repos\dapper\dapper.csproj'.

error: Value cannot be null. (Parameter 'path1')
Run Code Online (Sandbox Code Playgroud)

dapper asp.net-core-mvc

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

SQL 数据库不“保存”通过代码添加的信息(C#)

我正在使用 Dapper 将我的代码连接到我的 LocalDB。我有很多其他函数可以完美地访问信息,可以读取它并将其带入我的程序,但由于某种原因,我将信息插入数据库的函数没有做任何事情。我已经确认没有抛出异常,并且在单击按钮时到达代码(如消息框所示),但没有任何数据保存到数据库中。我还检查了我的查询,当我直接查询数据库时它工作正常,只是当我出于某种原因让代码执行它时(因此是我的问题)。出了什么问题?

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper;
using System.Configuration;
using System.Drawing;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace ProjectManager
{
class Database
{
    // Connection Variables
    private IDbConnection connection = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString);

    // Get Number of Projects
    public int GetNumOfProjects()
    {
        return connection.Query<int>("select count(*) from Projects").FirstOrDefault();
    }
    // Load Projects
    public ProjectPane LoadProjects(int i, Point start)
    {
        // Variables
        string title;
        string subject;
        int progress;

        // Load ProjectPane with Information
        title …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server dapper

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

在 .NET Core 中使用 Dapper 从存储过程插入获取 id

我正在使用 Dapper,并且编写了一个存储过程,用于插入一行并返回标识值。

使用Dapper,我想捕获这个标识值,但结果作为动态类型返回,我不知道如何访问这个id。

我的存储过程:

CREATE PROCEDURE USER_INSERT
    (@name  varchar(30),
     @job   varchar(30))    
AS    
BEGIN    
    INSERT INTO User (name, job) 
    VALUES (@name, @job)

    SELECT SCOPE_IDENTITY()
END 
Run Code Online (Sandbox Code Playgroud)

C#代码:

public async Task<int> InsertTest()
{
    using (var connection = new SqlConnection("myconnectionstring"))
    {
        string SP_INSERT = "USER_INSERT";

        var parameters = new { name = "Jon", job = "developer" };

        var insert =  await connection.QueryAsync(SP_INSERT, parameters, commandType: CommandType.StoredProcedure);

        var resultInsert = insert.SingleOrDefault();
    }

    return 0; //only for test
}
Run Code Online (Sandbox Code Playgroud)

查询结果截图,如何访问我的id字段?

在此处输入图片说明

c# sql-server identity stored-procedures dapper

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

如何将匿名对象传递给泛型函数?

根据Tim Corey 的ASP.NET 和dapper 教程,我采用了一个通用函数来将数据存储在 SQL Server 数据库中,以返回所存储对象的 ID:

public async Task<T> SaveData<T, U>(
    string storedProcedure,
    U parameters,
    string connectionId = "DefaultDataConnection")
{
    using IDbConnection connection = new SqlConnection(_configuration.GetConnectionString(connectionId));

    T ID = await connection.ExecuteScalarAsync<T>(storedProcedure, parameters, commandType: CommandType.StoredProcedure);

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

问题如下:在教程的原始代码中,可以在不声明泛型参数类型的情况下调用该方法。然而,对于附加的泛型返回类型,这是没有必要的。问题是,这些方法通常是用匿名类型对象调用的,我不知道如何调用该方法:

// this is within the insert method of my class, which is responsible for handling the images table:
int insertedID = await _db.SaveData<int, ????>("dbo.spImage_Insert", new { image.UserID, image.FileName, image.UploadDate });
Run Code Online (Sandbox Code Playgroud)

应该怎样做呢?我是否必须使用显式类型而不是匿名对象?

编辑:返回值是通用的,因为 ID 可以是 …

c# generics anonymous-types dapper

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