2017-08-29 94 views
1

我正在使用IBM .NET .NET Provider的MS .NET Core,无论我做什么每当我尝试使用它时创建我的上下文,我会得到以下错误。索引(从零开始)必须大于或等于零并小于参数列表的大小IBM .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 消息=指数(基于零的)必须大于参数列表的大小大于或等于零且小于。 源= 堆栈跟踪: 在IBM.Data.DB2.Core.DB2ConnPool.Open(的DB2Connection连接,字符串& szConnectionString,DB2ConnSettings & ppSettings,对象& ppConn) 在IBM.Data.DB2.Core.DB2Connection.Open() at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open() at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.BufferlessMoveNext(Boolean buffer) at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider。 < _ShapedQuery> 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源) 在IBMEntityFrameworkCoreTest.Program.Main(字串[] args)在C:\ CodeBase \ IBMEntityFrameworkCoreTest \ IBMEntityFrameworkCoreTest \ Program.cs:第24行

+0

更多信息,你能告诉我什么端口你通常用来连接到AS400?我通常在使用DB2 for Iseries时遇到通信错误 –

+0

@AnaFranco通常是446.您遇到的错误的详细信息是什么? –

+0

我得到许可证错误,但我相信我有一切顺序,我甚至可以使用数据工作室或Excel连接 –

回答

2

我发现这是由IBM的另一个版本的驱动程序在我的环境变量Path中输入引起的。您可以测试哪些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

相关问题