【发布时间】:2015-05-25 09:32:23
【问题描述】:
所以我正在尝试使用 Dapper.net,我很喜欢它。我不喜欢的是当我尝试批量插入实体时抛出以下错误:
DynamicMethod 的类型所有者无效。
在 System.Reflection.Emit.DynamicMethod.Init(字符串名称, MethodAttributes 属性,CallingConventions 调用Convention, 类型 returnType、Type[] 签名、类型所有者、Module m、Boolean skipVisibility, Boolean transparentMethod, StackCrawlMark & stackMark) 在 System.Reflection.Emit.DynamicMethod..ctor(字符串名称,类型 returnType, Type[] parameterTypes, Type owner, Boolean skipVisibility) 在 Dapper.SqlMapper.CreateParamInfoGenerator(身份标识, Boolean checkForDuplicates, Boolean removeUnused, IList
1 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__611.MoveNext() in D:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:line 1578 at System.Collections.Generic.List1..ctor(IEnumerable1 个集合)
在 System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable1 命令超时,可空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, Nullable1 commandTimeout, Nullable1 commandType) in D:\Dev\dapper-dot-net\Dapper NET40\SqlMapper.cs:line 1418 at NinjaEvaluation.Data.Database.DapperWrapper.<>c__DisplayClass41.b__3(SqlConnection sqlConnection, SqlTransaction 事务)中 c:\Projects\InHouse\ninjaevaluation\NinjaEvaluation\NinjaEvaluation.Data\Database\DapperWrapper.cs:line 52 在 NinjaEvaluation.Data.Database.DapperWrapper.Invoke(动作`2 行动)在 c:\Projects\InHouse\ninjaevaluation\NinjaEvaluation\NinjaEvaluation.Data\Database\DapperWrapper.cs:line 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)
我发现the following SO-thread 是由遇到同样问题的人发起的,但问题似乎是 .NET 版本 (3.5),但我正在运行 .NET 4.5,但我不知道问题出在哪里。
有什么建议吗?
【问题讨论】:
-
我想知道 - 这是一个受限的信任环境吗?还是没有什么特别之处的普通 .net?
-
常规本地环境。完全没有限制。