我对 Dapper 和 Dapper.SimpleCRUD ( https://github.com/ericdc1/Dapper.SimpleCRUD )还很陌生,所以如果我有点笨,请原谅。我有一个使用 GUID Id(主键)而不是自动递增 int Id 的现有数据库。看起来 Dapper/SimpleCRUD 假设是后者。我想我也许能够找到替代方案(也许是精巧的扩展?),但我想知道是否有人遇到过这个并对其进行了调整/找到了其他解决方案。Dapper Extensions ( https://github.com/tmsmith/Dapper-Extensions ) 似乎也基于 int Ids。感谢您的建议。
I am using dapper to add multiple new students in one db hit using this method:
db.ExecuteAsync(@"INSERT Student(Name,Age) values (@Name,@Age)",
students.Select(s => new { Name = s.Name, Age = s.Age })
);
Run Code Online (Sandbox Code Playgroud)
But the problem I don't have the new ids.
Can I make one db hit and still some how get the new ids ?
And if not, what is the most efficient way of performing such bulk insert ?
我使用vb.net和微型ORM DAPPER.NET启动了一个新项目。通过nuGet,我集成了dapper和dapper.simpleCRUD。我要执行某些CRUD操作时出现问题,我对SqlMapper.cs有问题。我不知道为什么,因为我已成功将“ dapper.simpleCRUD”扩展集成到项目中。怎么了?




我尝试手动添加SqlMapper.cs文件,我得到了:
我刚开始使用 Dapper。Dapper 工作正常。作为我尝试与 Dapper Extension 集成的下一步。它生成一个名为 System.Data.OleDb.OleDbException 的异常,"Additional information: Characters found after end of SQL statement."这是为什么?Dapper Extension 不支持 Ms Access(因为结束字符)或我的代码有问题或我遗漏了一些东西。我的代码在下面
using (var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myAccessFile.accdb;"))
{
conn.Open();
conn.Insert<Person>(new Person { Name = "John Stan", Age = 20 });
}
Run Code Online (Sandbox Code Playgroud) 我在项目中使用Dapper.NET作为ORM层。我正在尝试为文件上传和下载编写WebApis。但是我无法使其工作。我已经进行了足够的搜索以寻求帮助,但找不到任何帮助。
如果仅使用ADO.NET,则可以将VarBinary类型的SqlParameter用于文件流。但是Dapper.NET查询参数只是动态对象。因此,以下代码无法将记录插入到文件表中。
var fileStream = await Request.Content.ReadAsStreamAsync();
var streamId = Guid.NewGuid();
var fileName = streamId.ToString();
var sql = @"Insert into Attachments(stream_id, file_stream, name)
Values(@streamId, @fileStream, @fileName)";
using (var db = new SqlConnection(AppConfig.ConnectionString))
{
await db.ExecuteAsync(sql, new { streamId, fileStream, fileName);
}
fileStream.Close();
Run Code Online (Sandbox Code Playgroud)
引发异常:mscorlib.dll中的“ System.NotSupportedException”
附加信息:类型System.IO.Stream的成员fileStream不能用作参数值
有没有人这样做或知道我可以使用的任何dapper扩展插件?
如果我上课:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用Dapper / DapperExtensions将其插入到相应的MySQL表中:
var person = new Person { Id = 10, Name = "Bobby" };
connection.Insert(person);
Run Code Online (Sandbox Code Playgroud)
假设MySQL中的Id列设置为AUTO_INCREMENT且该表为空。然后将Id值10更改为1。
是否可以使用Dapper / DapperExtensions插入正确的ID 10?
我想按 DESC 顺序对数据进行排序。这是我的代码:
var predicate = Predicates.Sort<myPoco>(x => x.name, false);
var result = GetList<myPoco>(predicate).ToList();
protected IEnumerable<T> GetList<T>(object predicate, IList<ISort> sort = null, IDbTransaction transaction = null, int? commandTimeout = null, bool buffered = false) where T : class
{
var result = connection.GetList<T>(predicate, sort, transaction, commandTimeout, buffered);
return
}
Run Code Online (Sandbox Code Playgroud)
使用 Dapper Extensions,我无法对数据进行排序。上面的代码抛出以下错误:
找不到属性名称...
我正在myPoco使用 Dapper Extension 的ClassMapper.
我在这门课上遇到了以下挑战:
Public Class MyClass
Property Id As Integer
Property LastName as String
End Class
Run Code Online (Sandbox Code Playgroud)
数据库中对应的数据表有如下字段:
Id (int, not null)
Last-Name (nvarchar(80),null)
所以我需要映射MyClass.LastName到MyClasses.Last-Name并度过一段地狱般的时光......
当我编写自定义插入查询时,一切正常,但我想使用 Dapper 扩展包之一的 .Insert 语句。
我尝试过 Dapper.Contrib,但这会忽略我使用 Dapper.FluentMap 或使用 Dapper 本身的内置方法创建的映射Dapper.SetTypeMap。
我尝试了 Dapper.FastCrud,但我无法弄清楚如何为其配置映射,尽管这个 API 看起来很有前途。
任何人?
我想使用 Dapper Extensions Predicate 替换此查询?
SELECT *
FROM SomeTable
WHERE id IN (commaSeparatedListOfIDs)
Run Code Online (Sandbox Code Playgroud)
这commaSeparatedListOfIDs是IEnumerable一个Integer。
到目前为止我已经尝试过:
using (SqlConnection cn = new SqlConnection(_connectionString))
{
cn.Open();
var predicate = Predicates.Field<SomeTable>(f => f.Id, Operator.???, commaSeparatedListOfIDs);
IEnumerable<SomeTable> list = cn.GetList<SomeTable>(predicate);
cn.Close();
}
Run Code Online (Sandbox Code Playgroud)
我需要一个操作符Operator.In,但它在 Dapper Extensions 中不存在。
我应该如何使用 Dapper Extensions Predicate 系统实现“IN”子句?
我正在尝试使用 Dapper Extensions 进行 CRUD 操作。但是在将数据插入 MySQL 数据库时出现错误,如下所示:
错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 [....] 行附近 [......] 使用的正确语法
如果我使用 MSSQL 数据库,Dapper Extensions 工作正常。为什么我在使用 MySQL 时出现此错误?
我使用 Dapper 库。我有一个动态查询,它从 QueryMultiple 方法返回一个或多个结果集/表。我没有任何具体的结果集数量可以写。Read() 方法的。我们是否有任何函数或方法(例如 result.Count = 返回表的数量)或有多少个。我们可以编写 read() 来检索 N 次。结果集?
SqlMapper.GridReader result = _connection.QueryMultipleAsync(model.APIName, oPara, commandType: CommandType.StoredProcedure).Result;
dynamic dyn = result.Read();
Run Code Online (Sandbox Code Playgroud) 我正在使用 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)