IBM.EntityFrameworkCore를 사용하여 IBM iSeries에 상주하는 DB2 파일/테이블에서 데이터를 가져 오려고합니다. 내가 그 길을 따라 문제에 부딪쳤던 것처럼 보인다. 그들 중 대부분은이 사이트에 대한 의견을 읽음으로써 일할 수 있었지만,이 사이트에서 나를 도울 수있는 것을 찾을 수는 없습니다. 그것을 가리 키도록 1.1.1.101 오류 Visual Studio 2017의 DB2 iSeries에서 데이터를 가져 오는 SQL30061N IBM.EntityFrameworkCore를 사용하는 C#
- :
나는 다음과 같은 단계를 수행했습니다 C : ₩ Users ₩ MyUserName.nuget ₩ packages ₩ ibm.data.db2.core ₩ 1.1.1.101 ₩ build ₩ clidriver ₩ bin
- 에서 db2level 명령을 사용하여 올바른 드라이버가 설치되고로드되었는지 확인하십시오. 명령 프롬프트.
- 콘솔 앱 프로젝트 내에서 iSeriesContext.cs, SYSVARIABLES.cs 및 Program.cs라는 세 개의 클래스를 만들었습니다.
테스트 목적으로 iSeries에서 DB2와 함께 표준으로 제공되는 시스템 스키마/데이터베이스를 사용하고 있습니다.
Program.cs에는 다음이 포함
using System.Linq;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
iSeriesContext context = new iSeriesContext();
var results = context.SYSVARIABLES.Where(p => p.VARIABLE_NAME == "test").FirstOrDefault();
}
//enter code here
}
}
iSeriesContext.cs가 포함
using System;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using IBM.EntityFrameworkCore;
using IBM.EntityFrameworkCore.Storage.Internal;
namespace ConsoleApp1
{
public class iSeriesContext : DbContext
{
public iSeriesContext() : base() { }
public DbSet<SYSVARIABLE> SYSVARIABLES { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseDb2(@"server=192.0.0.1:446; Database=QSYS2; userid=username; password=password", p => p.SetServerInfo(IBMDBServerType.AS400, IBMDBServerVersion.AS400_07_01));
}
}
}
SYSVARIABLE.cs가 포함
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
public class SYSVARIABLE
{
[Key]
public string VARIABLE_SCHEMA { get; set; }
public string VARIABLE_NAME { get; set; }
public string SYSTEM_VAR_SCHEMA { get; set; }
}
}
추가 정보 :
나는 conf를 가졌다. 내 iSeries OS는 V7R1입니다.
iSeries의 내 drda 서비스가 포트 446에서 청취하고 있고 코드를 실행할 때 "마지막 활동 날짜/시간"이 현재 시간으로 갱신되었음을 확인했습니다.
솔루션은 오류없이 컴파일됩니다. 나는 그것을 실행할 때, 나는 오류의
"IBM.Data.DB2.Core.DB2Exception: 'External component has thrown an exception.'" error on this line "var results = context.SYSVARIABLES.Where(p => p.VARIABLE_NAME == "test").FirstOrDefault();" in Program.cs
세부 항목은 얻을 : 나는 매우 가까운 것 같은
IBM.Data.DB2.Core.DB2Exception occurred
HResult=0x80004005
Message=ERROR [08004] [IBM] SQL30061N The database alias or database name
"QSYS2 " was not found at the remote node. SQLSTATE=08004
[IBM] SQL30061N The database alias or database name "QSYS2 " was not found at the remote node. SQLSTATE=08004
Source=<Cannot evaluate the exception source>
StackTrace:
at IBM.Data.DB2.Core.DB2ConnPool.Open(DB2Connection connection, String& szConnectionString, DB2ConnSettings& ppSettings, Object& ppConn)
at 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 System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Boolean& found)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass20_0`1.<CompileQueryCore>b__0(QueryContext qc)
at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
at ConsoleApp1.Program.Main(String[] args) in C:\Users\username\source\repos\IBMEntityFrameworkTest\ConsoleApp1\Program.cs:line 10
"
나는 생각합니다. 어떤 도움을 주시면 감사하겠습니다.
나는 IP를 192.0.0.1에 대한 질문이 야생 IP가 192.168.n.n 또는 10.n.n.n.해야한다입니다 – danny117