【问题标题】:Index (zero based) must be greater than or equal to zero and less than the size of the argument list IBM .net core索引(从零开始)必须大于或等于零且小于参数列表的大小 IBM .net core
【发布时间】:2017-08-30 02:12:19
【问题描述】:

我打算使用 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; }

}

模型.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 发生 H结果=0x80131537 Message=Index(从零开始)必须大于或等于零且小于参数列表的大小。 来源= 堆栈跟踪: 在 IBM.Data.DB2.Core.DB2ConnPool.Open(DB2Connection 连接,String& szConnectionString,DB2ConnSettings& ppSettings,Object& ppConn) 在 IBM.Data.DB2.Core.DB2Connection.Open() 在 Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() 在 Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.BufferlessMoveNext(布尔缓冲区) 在 Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.<_shapedquery>d__31.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.<_TrackEntities>d__152.MoveNext() 在 Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor1.EnumeratorExceptionInterceptor.MoveNext() at System.Collections.Generic.List1.AddEnumerable(IEnumerable1 enumerable) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 源) 在 C:\CodeBase\IBMEntityFrameworkCoreTest\IBMEntityFrameworkCoreTest\Program.cs:line 24 中的 IBMEntityFrameworkCoreTest.Program.Main(String[] args) 处

【问题讨论】:

  • 你能告诉我你通常用什么端口来连接AS400吗?我在使用 DB2 for Iseries 时通常会遇到通信错误
  • @AnaFranco 通常是 446。你得到的错误的详细信息是什么?
  • 我收到一个许可证错误,但我相信我一切都井井有条,我什至可以使用 data studio 或 excel 进行连接
  • 我要试试这个:www-01.ibm.com/support/docview.wss?uid=swg21635635 非常感谢

标签: entity-framework asp.net-core db2


【解决方案1】:

我发现这是因为在我的环境变量 Path 中输入了来自 IBM 的另一个版本的驱动程序。您可以通过运行 Visual Studio 命令提示符并键入

来测试 Visual Studio 正在查看的内容
db2level

我有

C:\PROGRA~1\IBM\IBMDAT~1\BIN

你需要删除它并确保你有

C:\Users\<user_name>\.nuget\packages\IBM.Data.DB2.Core\1.1.1.101\build\clidriver" 

更新路径变量需要运行的命令

Set PATH=%PATH%;(your new path);

您可以在

找到有关此的更多信息

https://www.ibm.com/developerworks/community/forums/html/topic?id=9a107d00-d814-440c-b438-faa4d020ae1a&ps=25

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2011-12-19
    • 2016-07-03
    • 2023-04-11
    • 2016-04-01
    • 2018-07-26
    • 2011-11-20
    • 2013-05-27
    相关资源
    最近更新 更多