我正在尝试使用Dapper进行复杂的查询,以消除之前使用NH时丢失的任何开销。
我有以下查询(请注意,这已经大大缩小了):
SELECT DISTINCT *
FROM tasks t
WHERE t.initials = @UserInits
它是通过我们的存储库调用的:
taskRepo.RawExec<TaskListItemDTO>(Query,new {UserInits = "SAS"})
我们的DapperExec实现包括以下内容:
public IEnumerable<T> RawExec<T>(string SQL, o
我在ODBC提供程序上使用Dapper,它不支持命名参数。对于大多数查询,我使用了伪命名参数:?name?。但是,当我试图
string query = $"select * from \"{TableName}\" where ID in ?Ids?";
return connection.Query<CdfGroupByCdfUserRecord>(query, new {Ids = ids}).ToArray();
我看到Dapper生成查询
select * from "MY_TABLE" where ID in (?Id
我使用Dapper并调用QueryFirst方法,该方法返回以下错误:
错误42000 Server本机客户端10.0Must声明标量变量\"@NombreDivision\
public static int GetSegmentoDivision(string division)
{
int res = -1;
try
{
string query = "SELECT [SEGMENTID] FROM [ACCESSCONTROL].[dbo].[SEGMENT] WHERE
我发现了如何使用Dapper扩展来实现IN子句。
现在,我想实现NOT IN子句。
因此,我期望SQL查询如下所示:
SELECT * FROM MyTable
WHERE MyField NOT IN (param1, param2)
但是我在Dapper扩展中找不到任何关于NOT IN或NOT子句的东西。
如何使用Dapper扩展谓词实现NOT IN子句?
我尝试使用Dapper运行一个查询,其中包含一组已知的参数,但包含这些参数的值列表。我想要做的一个简单的例子是:
DateTime endDate = DateTime.Now;
DateTime startDate = endDate.AddHours(-24);
string query = "select COUNT(*) from Test where Status = @Status AND DateCreated <= @Hour;";
var stuff = con.Query(query, (startDate).ByHourTo(endDate).Se
我有一个基本的存储库框架,它最终执行一个查询并将结果映射回一个对象:
例如:
public SomeEntity Get(id)
{
return base.GetItem<SomeEntity>
("select * from SomeEntities where id = @idParam",
new { idParam = id});
}
如果这看起来像Dapper,那是因为在幕后,GetItem正在包装Dapper。
我想在GetItem中
我想用Dapper扩展谓词替换这个查询吗?
SELECT *
FROM SomeTable
WHERE id IN (commaSeparatedListOfIDs)
commaSeparatedListOfIDs是一个IEnumerable of Integer。
到目前为止,我已经尝试过:
using (SqlConnection cn = new SqlConnection(_connectionString))
{
cn.Open();
var predicate = Predicates.Field<SomeTable>(f => f.Id, O
使用Dapper ORM,我构造了以下查询,以便从我的PostgreSQL数据存储中获得特定的订单:
string.Format("SELECT * FROM OrderTable WHERE orderjson @> {0}",
"'{\"Lines\":[{\"SKUID\":\"@SkuId\"}]}'");
将123456-0传递到参数@SkuId中,此构造应导致以下查询
SELECT * FROM ordertable WHERE orderjson @> '{
我正尝试在SQL Server上使用dplyr执行SQL查询:
tbl(con, sql(sqlQuery))
查询是使用sprintf("SELECT ... WHERE a = '%s')动态生成的。这是一个糟糕的实践,因为它可能被滥用于SQL注入,但我找不到任何文档或dplyr中参数化查询的工作示例。它能做到吗?如何做到?
连接(con)正在使用数据库接口、odbc库和{SQL Server Native Client 11.0} ODBC驱动程序:
con <- DBI::dbConnect(odbc::odbc(),
尝试通过Dapper插入表(文本列),并从Informix获取错误:
Illegal attempt to use Text/Byte host variable
我已经编写了一个小程序来模拟这一点,而且我仍然面临着问题。
我们目前不能使用Informix驱动程序,因为它们不适合我们的需要。
using Dapper;
using System;
using System.Data.Odbc;
namespace DapperParamsTest
{
class Program
{
static void Main(string[] args)
如何使用Dapper和Oracle数据库参数化此查询?
SELECT COLUMN_C FROM SOME_TABLE
WHERE (COLUMN_A, COLUMN_B) IN ((1, 2), (3, 4), (5, 6))
换句话说,我需要将数字对集合作为:parameters发送到这个查询中。
SELECT COLUMN_C FROM SOME_TABLE
WHERE (COLUMN_A, COLUMN_B) IN :parameters
我想实现这样的一些功能:
public static string GetResult(string sql) {
// TODO:
// result = connection.Query(....);
// return result.FirstRow().FirstChild().ToString();
}
像这样打电话:
string myName = GetResult("SELECT userName from tb_Users WHERE ID = 1");
// or
int totalRows = Convert.ToInt32(Ge
EF SqlQuery有类似于Dapper的多重映射功能吗?
请参阅:
EF联接查询的结果与我预期的不一样。
示例:
型号:
public class Tlb
{
[Key]
public int TlbId { get; set; }
public bool IsPublished { get; set; }
public virtual ICollection<TlbAttachment> Attachments { get; set; }
public virtual ICollection<TlbAttachment> O
我在我的项目中使用Dapper micro-ORM,我想从表中选择所有记录。下面是我的代码。
var result = connection.Query<Department>("Select * From Department");
我得到了下面的错误
No Overload for method 'Query' takes 1 argument
我的项目的目标框架是.net 3.5。如果我将项目的目标框架更改为.net 4.0,并重新安装Dapper4.0(使用nuget),一切都运行良好。
我不想使用where子句(即查询方法没有额外的参数)
例如,我有两节课
class User
{
string name {get;set;}
int age {get;set;}
Register reg {get;set;}
}
class Register
{
datetime time {get; set;}
bool active {get;set;}
}
我将查询设置为与属性匹配,但我希望将值映射到类中的值。
我该如何在dapper中让它工作呢?
我的代码结构如下:
class Person
{
Name PersonName;
int Age;
}
class Name
{
string FirstName { get; set; }
string LastName { get; set; }
}
下面是我的存储过程,它从Database填充数据。
Create Procedure SpGetAllPersons
As
Select FirstName, LastName, Age from Persons
我如何写Dapper查询,从数据库中拉出所有人?
示例:
List<Person>
如果我有一个对象,比如
class Thing
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
public string D { get; set; }
}
Dapper可以很好地使用:
return conn.QuerySingle<Thing>(
@"SELECT A, B, C, D
FROM [Thing] WHERE Id = @id", new { id });
但是如果我的类结构是
cla
当我遇到一个奇怪的问题时,我正在研究将我们的一些EF6代码移植到Dapper以获得更好的性能。单行查询在Dapper中占用的几乎是EF中的10倍。看起来是这样的:
using (IDbConnection conn = new SqlConnection("connection string"))
{
row = conn.Query<ReportView>("select * from ReportView where ID = @ID",
我使用Microsoft ODBC for Oracle驱动程序成功连接到Oracle 10g DB。
没有参数的常规查询可以很好地工作,但是参数化查询就像没有传入参数一样。
例如。
--this works fine
Select * from tbl1 where column1 = 'test'
--this doesn't
select * from tbl1 where column1 = ?
--odbc string parameter 'test'
下面是我的连接字符串:
"Driver={Microsoft ODBC for
我有一个带有几个子查询的查询,如下所示
SELECT ...
FROM (SELECT ...
FROM ...
GROUP BY ...) as speedLimitCalc INNER JOIN
(SELECT ...
FROM date a INNER JOIN HOURLY_TEST b ON a.[FULL_DAY_DT] = b.DATE
WHERE (b.DATE BETWEEN '".$date_s."' AND '".$date_e.
我有一个想要在查询中使用的List<Guid> (也尝试过使用普通数组)。Dapper生成SQL并将参数正确替换为带编号的参数。但是,PG抱怨list参数的语法。没有给出进一步的细节。复制生成的SQL并用实际值替换数字(在列表参数中添加括号),查询就可以工作了。
下面是生成的SQL中有问题的子句:
WHERE (
names.tenant = $1
AND scan_results.tenant = $1
AND scan_results.scan IN $2
)
Dapper的原始语句字符串如下:
WHERE (
file_names.tenant
我做了一些研究,但没有找到一个明确的答案我的问题。
是否有方法定义SQL查询中的哪个?属于哪个参数?
例如,我需要执行这样的操作:
SELECT * FROM myTable WHERE myField = @Param1 OR myField2 = @Param1
OR myField1 = @Param2 OR myField2 = @Param2
ODBC中的相同查询是:
SELECT * FROM myTable WHERE myField = ? or myField2 = ? or myField1 = ?
or myField2 = ?
有没有一种
实际上,我有一个查询,它返回的结果包含类型为varchar的列(对于ex.Address),但该表的域模型包含类型为object的属性(对于ex.地址).Because,它拖走的错误是无法将字符串转换为注释。我不知道如何使用dapper .net解决此问题。
代码片段:
IEnumerable<Account> resultList = conn.Query<Account>(@"
SELECT *
FROM Account
WHERE sh
我对使用: DB2、Dapper、IN子句的Select有问题。我正在尝试向查询传递一个字符串数组。查询本身运行良好,但查询只从数组中提取第一个值,即(sudo代码,因为我将在C#代码中使用此代码)。
Select col1, col1, col3 from schema.tblName
Where col1 = ? AND col2 IN (?)
现在,更多关于设置的上下文,在MSSQL中使用Dapper查询和使用DB2查询是有区别的。我的DB2被设置为只接受基于位置的参数,所以呢?代替参数(我对此没有控制权),我不能使用命名参数。
在C#中,我尝试过这样的方法:
var paramete