小编Kar*_*yan的帖子

在EF Core 2.0中将DataTable用作表值参数

[更新的问题描述]我们有一个批量导入过程,我们将其IEnumerable<SqlDataRecord>作为表值参数(TVP)传递给存储过程,因为DataTable类型直到EF Core 1.1才可用。我们刚刚将项目升级为使用.Net Core 2.0,并开始更新代码以使用DataTable。该ExecuteSqlCommandAsync命令开始抛出InvalidCastException。以下是异常详细信息:

System.InvalidCastException occurred
  HResult=0x80004002
  Message=Failed to convert parameter value from a DataTable to a IEnumerable`1.
  Source=<Cannot evaluate the exception source>
  StackTrace:
   at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType, Boolean& coercedToDataFeed, Boolean& typeChanged, Boolean allowStreaming)
   at System.Data.SqlClient.SqlParameter.GetCoercedValue()
   at System.Data.SqlClient.SqlParameter.Validate(Int32 index, Boolean isCommandProc)
   at System.Data.SqlClient.SqlCommand.BuildParamList(TdsParser parser, SqlParameterCollection parameters)
   at System.Data.SqlClient.SqlCommand.BuildExecuteSql(CommandBehavior behavior, String commandText, SqlParameterCollection parameters, _SqlRPC& rpc)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework table-valued-parameters entity-framework-core

2
推荐指数
1
解决办法
2518
查看次数