2017-08-29 392 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

相關問題