我想要使用IBM DB .NET Provider for MS .NET Core,无论我每次尝试使用它时创建我的上下文我都会遇到以下错误。
"索引(从零开始)必须大于或等于零且小于参数列表的大小。"
上下文类
public class IBMContext : DbContext
{
public IBMContext()
: base()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseDb2(@"Server=server;Database=DB;userid=user;password=pass",
p => p.SetServerInfo(IBMDBServerType.AS400, IBMDBServerVersion.AS400_07_01));
}
public virtual DbSet<Table> Table{ get; set; }
}
Model.cs
[Table("Table")]
public class Table
{
[Key]
public int Key{ get; set; }
public string Stat{ get; set; }
public string Jul{ get; set; }
public string App { get; set; }
public string Date { get; set; }
}
使用
static void Main(string[] args)
{
Console.WriteLine("Test");
var context = new IBMContext();
var result = context.Table.ToList();
Console.ReadLine();
}
包
IBM.EnityFrameworkCore(1.1.1.101)
完整错误堆栈
发生了System.FormatException
的HResult = 0x80131537
Message = Index(从零开始)必须大于或等于零且小于参数列表的大小。
来源=
堆栈跟踪:
在IBM.Data.DB2.Core.DB2ConnPool.Open(DB2Connection连接,String&amp; szConnectionString,DB2ConnSettings&amp; ppSettings,Object&amp; ppConn)
在IBM.Data.DB2.Core.DB2Connection.Open()
在Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open()
在Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.BufferlessMoveNext(布尔缓冲区)
在Microsoft.EntityFrameworkCore.Query.QueryMethodProvider。&lt; _ShapedQuery&gt; d__3 1.MoveNext()
at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.<_TrackEntities>d__15
2.MoveNext()
在Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor 1.EnumeratorExceptionInterceptor.MoveNext()
at System.Collections.Generic.List
1.AddEnumerable(IEnumerable 1 enumerable)
at System.Linq.Enumerable.ToList[TSource](IEnumerable
1 source)
在C:\ CodeBase \ IBMEntityFrameworkCoreTest \ IBMEntityFrameworkCoreTest \ Program.cs中的IBMEntityFrameworkCoreTest.Program.Main(String [] args):第24行
答案 0 :(得分:2)
我发现这是因为IBM在我的环境变量Path中输入了另一个版本的驱动程序。您可以通过运行Visual Studio命令提示符并键入
来测试Visual Studio正在查看的内容<select name="name" id="id1">
<option value='value1'>
<option value='value2'>
<option value='value3'>
<option value='value4'>
</select>
我有
db2level
你需要删除它并确保你有
C:\PROGRA~1\IBM\IBMDAT~1\BIN
运行以更新路径变量
所需的命令C:\Users\<user_name>\.nuget\packages\IBM.Data.DB2.Core\1.1.1.101\build\clidriver"
您可以在
找到有关此内容的更多信息