4

내 질문은 상당히 간단하며 답을 찾기 위해 많은 노력을 기울 였지만 솔루션을 찾는 데는 실패했습니다. 그러나 이것은 드문 경우처럼 보이지는 않습니다. 따라서 단순한 무언가가 간과되거나 그 문제를 간과 한 참고 서적이 있다면 몇 가지 지침에 대해 감사드립니다! 여기에 ....Net Core Reverse-Engineering DNS DNS 연결

새로운 .Net 핵심 프로젝트를 통해 기존의 오프 사이트 데이터베이스에 연결하려고 시도 중. 여기에 리버스 엔지니어링 지침을 따라했습니다 : https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html

이 지침은 로컬 컴퓨터의 db에서 작동하지만 외부 서버의 데이터베이스 DNS에 대한 연결 문자열을 사용하여 Scaffold-DbContext를 실행하면 컨텍스트는 있지만 엔티티는 없습니다. 그래서 내 상황에 맞는 클래스 파일은 다음과 같습니다

using System; 
using Microsoft.EntityFrameworkCore; 
using Microsoft.EntityFrameworkCore.Metadata; 

namespace CensusApi.Models 
{ 
    public partial class CensusDbContext : DbContext 
    { 
     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
    { 
     #warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings. 
     optionsBuilder.UseSqlServer(@"Server=database.dns.org,[port];Database=mydatabase;Integrated Security=False;User ID=myuser;Password=mypassword;"); 
    } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
    } 

    // Unable to generate entity type for table 'dbo.LANDING_DEMOGRAPHICS_2010'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LANDING_ECONOMIC_2007_2011'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LANDING_STATE_FIPS'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LANDING_ZIP_STATE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.SAMAIN_ZIP_STATE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_HOUSEHOLDS'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_HOUSING_OCCUPANCY'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_MEDIAN_AGE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_MEDIAN_INCOME'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_POPULATION'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_POPULATION_BY_RANGE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_RACE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_RACE_HISPANIC_AND_LATINO'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_RELATIONSHIP'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.STAGE_ZIP_STATE'. Please see the warning messages. 
    // Unable to generate entity type for table 'dbo.LogShipStatus'. Please see the warning messages. 
    } 
} 

ErrorList 창 (연결 문자열에 잠재적으로 민감한 정보를 보호하기 위해, 즉 경고) 위의 코드의 라인 (11)에 대한 # 회신을 의미합니다. 이 리버스 엔지니어링을 한 후에 다음 단계는 연결 문자열의 위치를 ​​다시 지정하는 것이고 # 경고는 리버스 엔지니어링 프로세스에 방해가되지 않는 일반적인 경고 인 것으로 알고 있습니다.

내가 시도한 자격 증명에는 sa 사용자와 제한된 사용자가 포함되어 있습니다. 둘 다 동일한 결과를 가지므로 권한 문제가 아닌 것으로 보입니다.

외부 서버에 연결하는 데 사용해야하는 다른 방법이나 프레임 워크가 있습니까?

의견이나 의견을 보내 주시면 대단히 감사하겠습니다.

+0

답장 시간을내어 주셔서 감사합니다. Tseng. 그러나 Scaffold-DbContext 명령에 연결 문자열이 필요하므로 연결 문자열을 이동해도 문제가 해결되지 않습니다. 일단 연결 문자열이 Startup.cs로 옮겨지면 다시 참조하기 위해 참조 할 수있는 방법이 있습니까? 아니면 수정 된 컨텍스트를 사용하여 비계를 업데이트 할 수 있습니까? –

+0

컨텍스트가 웹 프로젝트와 동일한 응용 프로그램에 있습니까? 현재 컨텍스트가 응용 프로그램에 있고 클래스 라이브러리에서 작동하지 않는 경우에만 명령 줄 도구가 작동한다는 제한 사항이 있습니다. 해결 방법이 있습니다 https://docs.efproject.net/en/latest/miscellaneous/cli/dotnet.html#targeting-class-library-projects-is-not-supported – Tseng

+0

엔티티를 성공적으로 생성 한 데이터베이스는 다음과 같습니다. DSN을 통해 연결하려는 것과 동일한 (스키마 방식)? –

답변

22

테이블에 기본 키가 있는지 확인하십시오.

데이터베이스에서 단 하나의 테이블만으로 정확한 오류 메시지가 표시되고 기본 키를 잊어 버렸음을 깨달았으며 DbScaffold 명령을 다시 실행 한 후 정상적으로 실행되었습니다.