看起来Dapper中有一个ExecuteScalar ......
是否重命名或删除了ExecuteScalar?
现在可以用.Query或.Query <T>来实现吗?
这是使用的正确方法是BeginTransaction()用IDbConnection在小巧玲珑的?
我创建了一个必须使用的方法BeginTransaction().这是代码.
using (IDbConnection cn = DBConnection)
{
var oTransaction = cn.BeginTransaction();
try
{
// SAVE BASIC CONSULT DETAIL
var oPara = new DynamicParameters();
oPara.Add("@PatientID", iPatientID, dbType: DbType.Int32);
..........blah......blah............
}
catch (Exception ex)
{
oTransaction.Rollback();
return new SaveResponse { Success = false, ResponseString = ex.Message };
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行上面的方法 - 我有一个例外 -
操作无效.连接已关闭.
这是因为在打开连接之前无法开始事务.所以当我添加这一行:时cn.Open();,错误得到解决.但我已经读过某个地方,手动打开连接是不好的做法!! Dapper仅在需要时才打开连接.
在Entity框架中,您可以使用a处理事务TransactionScope.
所以我的问题是cn.Open()...在没有在Dapper中添加行来处理事务的好习惯是什么?我想应该有一些正确的方法.
我正在使用Nuget的Dapper 1.31.我有这个非常简单的代码片段,
string connString = "";
string query = "";
int val = 0;
CancellationTokenSource tokenSource = new CancellationTokenSource();
using (IDbConnection conn = new SqlConnection(connString))
{
conn.Open();
val = (await conn.QueryAsync<int>(query, tokenSource.Token)).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
当我按下F12时QueryAsync,它指向我
public static Task<IEnumerable<T>> QueryAsync<T>
(
this IDbConnection cnn,
string sql,
dynamic param = null,
IDbTransaction transaction = null,
int? commandTimeout = null,
CommandType? commandType = null
);
Run Code Online (Sandbox Code Playgroud)
CancellationToken它的签名没有.
问题:
tokenSource.Cancel()是否真的取消了该方法,因为我不知道如何生成长时间运行的SQL查询.请问.Cancel()真的取消方法,并抛出OperationCancelledException?谢谢!
我正在Dapper FastExpando引入一个对象,并希望能够在运行时而不是在设计/编译时动态引用列名.所以我希望能够做到以下几点:
var testdata = conn.Query("select * from Ride Where RiderNum = 21457");
Run Code Online (Sandbox Code Playgroud)
我希望能够做到以下几点:
foreach( var row in testdata) {
var Value = row["PropertyA"];
}
Run Code Online (Sandbox Code Playgroud)
我明白我能做到:
var Value = row.PropertyA;
Run Code Online (Sandbox Code Playgroud)
但我不能这样做,因为我将需要的属性名称直到运行时才会知道.
这个SO问题的答案不起作用.我仍然得到同样的Target Invocation例外.所以...
有没有办法用Dapper FastExpando做我想做的事情?
Dapper隐含地期望连接在使用时打开.为什么不自己打开和关闭它?这不是简单的连接管理吗?
我问,因为我和同事一直在寻找有关连接池的幕后故事的性质,以及如何在多个命令之间保持连接打开,或打开和关闭它有任何好处对于每个命令.
我一直尝试在Dapper中使用IEnumerable<string>with WHERE IN子句一段时间没有成功.
在文档中,它确实表示IEnumerable<int>支持在a中使用,WHERE IN但我甚至无法使其工作.
Dapper allow you to pass in IEnumerable<int> and will automatically parameterize your query.
我一直收到的错误消息是Sql语法错误. Incorrect syntax near ','.
我已经整理了一些测试代码,希望能够展示我想要实现的目标.
string connString = "Server=*.*.*.*;Database=*;User Id=*;Password=*;";
string sqlStringIn = @"SELECT StringText FROM
(SELECT 1 ID, 'A' StringID, 'This is a test' StringText
UNION SELECT 2 ID, 'B' StringID, 'Another test' StringText
UNION SELECT 3 ID, 'C' StringID, 'And another' StringText
UNION SELECT 4 ID, 'D' StringID, 'and again' StringText
UNION …Run Code Online (Sandbox Code Playgroud) 有很多方法可以将数据库字段名称映射到类名,但是删除下划线的最简单方法是什么?
public IEnumerable<PersonResult> GetPerson(int personId)
{
using (var dbConnection = _dbConnectionFactory.Create(ConnectionStrings.ProjectXYZ))
{
IEnumerable<PersonResult> result =
dbConnection.Query<PersonResult>("fn_get_person", new { personId },
commandType: CommandType.StoredProcedure).ToList();
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
表和数据库字段:
person
--------
person_id
full_name
Run Code Online (Sandbox Code Playgroud)
有效的类:(小巧玲珑已经忽略大写)
public class PersonResult
{
public int Person_Id { get; set; }
public string Full_Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想把课程改为:
public class PersonResult
{
public int PersonId { get; set; }
public string FullName { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我是.NET的新手.我有兴趣使用Dapper micro-ORM从ASP .NET应用程序访问MySQL后端.
可以这样做吗?开始时我需要知道什么?
有没有办法使用dapper-dot-net来使用属性来指定应该使用的列名而不是属性名?
public class Code
{
public int Id { get; set; }
public string Type { get; set; }
// This is called code in the table.
public string Value { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
无论我选择什么,我都希望能够命名我的房产.我们的数据库没有一致的命名约定.
如果没有小巧玲珑,还有其他类似的选择吗?
我在数据库中有这两个表与一个(类别)到多个(产品)关系
Table Product
Name
Description
ProductCategory
Table Category
Category
Description
Run Code Online (Sandbox Code Playgroud)
而这些课程;
public class Product
{
public string Name { get; set; }
public string Description { get; set; }
public Category CategoryName { get; set}
}
public class Category
{
public string CategoryName { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想在列表中找到包含所有产品和类别对象数据的列表.我已经阅读了关于multipleResults和queryMultiple但是看不到如何将两者结合在一起.我知道如何为单个产品做到这一点但是所有具有各自类别对象的产品也是如此.