所以我尝试使用 Dapper.net 并且我很喜欢它。我不喜欢的是,当我尝试批量插入实体时,出现以下错误:
DynamicMethod 的类型所有者无效。
在 System.Reflection.Emit.DynamicMethod.Init(字符串名称,
MethodAttributes 属性、CallingConventions 调用约定、
类型 returnType、类型 [] 签名、类型所有者、模块 m、布尔值
SkipVisibility、布尔透明方法、StackCrawlMark& stackMark)
在 System.Reflection.Emit.DynamicMethod..ctor(字符串名称,类型
returnType、Type[] 参数类型、类型所有者、布尔值(skipVisibility)
在Dapper.SqlMapper.CreateParamInfoGenerator(身份标识,
布尔值 checkForDuplicates、布尔值 removeUnused、IList1 literals) in
D:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:line 3033 at
Dapper.SqlMapper.GetCacheInfo(Identity identity, Object
exampleParameters, Boolean addToCache) in D:\Dev\dapper-dot-net\Dapper
NET40\SqlMapper.cs:line 2138 at
Dapper.SqlMapper.<QueryImpl>d__61
1.MoveNext()中
D:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:第 1578 行
System.Collections.Generic.List1..ctor(IEnumerable
1 集)
在 System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at
Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param,
IDbTransaction transaction, Boolean buffered, Nullable
1
命令超时,可为空1 commandType) in
D:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:line 1479 at
Dapper.SqlMapper.Query(IDbConnection cnn, String sql, Object param,
IDbTransaction transaction, Boolean buffered, Nullable
1
命令超时,可为空1 commandType) in
D:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:line 1418 at
NinjaEvaluation.Data.Database.DapperWrapper.<>c__DisplayClass4
1.b__3(Sql连接
sqlConnection、SqlTransaction 事务)中
c:\ Projects \ InHouse \ ninjaevaluation \ NinjaEvaluation \ NinjaEvaluation.Data \ Database \ DapperWrapper.cs:行
52 在 NinjaEvaluation.Data.Database.DapperWrapper.Invoke(Action`2
行动)在
c:\ Projects \ InHouse \ ninjaevaluation \ NinjaEvaluation \ NinjaEvaluation.Data \ Database \ DapperWrapper.cs:行
68
当我像这样运行查询时,这种情况发生在完全正常的情况下:
string sql = @" INSERT INTO XXX
(XXXId, AnotherId, ThirdId, Value, Comment)
VALUES
(@XXXId, @AnotherId, @ThirdId, @Value, @Comment)";
var parameters = command
.MyModels
.Select(model => new
{
XXXId= model.XXXId,
AnotherId= model.AnotherId,
ThirdId= model.ThirdId,
Value = model.Value,
Comment = model.Comment
})
.ToArray();
...
sqlConnection.Query(sql, parameters, commandType: commandType, transaction: transaction)
I found 以下SO线程 https://stackoverflow.com/questions/8705325/dapper-execute-a-command-multiple-times-and-linq-and-toarray由有同样问题的人开始,但问题似乎是 .NET 版本(3.5),但我正在运行 .NET 4.5,我无法弄清楚问题是什么。
有什么建议么?