2016-09-20 2 views
0

SQL Server 데이터베이스와 상호 작용하기 위해 Entity Framework를 사용하는 ASP.NET 코어 응용 프로그램에서 작업하고 있습니다. 지금까지 Scaffold-DbContext 명령을 사용하여 SQL 서버 데이터베이스에서 새 모델을 만들었습니다. 여러 테이블을 기반으로 DbContext을 만들려는 경우에도 위의 명령에서 -t 플래그를 사용하여이 작업을 수행 할 수 있습니다. 모든 것이 단일 SQL 데이터베이스에서 발생합니다.다른 데이터베이스에서 여러 테이블에 가입

Scaffold-DbContext "Server=XXXXXXXXX;Database=XXXXXXXX;User Id=XXXXX;Password:XXXXXX" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t Table1 Table2 

Scaffold-DbContext parameters 명령에서 다른 데이터베이스를 지정하는 옵션을 찾을 수 없습니다.

새로운 시나리오에서 다른 SQL 데이터베이스의 2 개 테이블을 조인해야합니다. 서로 다른 데이터베이스의 2 개 테이블로 구성된 모델을 만드는 방법이 있습니까? 두 테이블 모두 그들 사이에서 일대일 관계를 사용하고 있습니다.

예를 들어, DB1에는 table1이 있고 DB2에는 table2가 있습니다. 이 두 테이블 (table1과 table2)으로 구성된 DbContext을 만드는 방법이 있습니까?

2 개의 다른 데이터베이스에서 2 개의 테이블을 조인 할 수있는 다른 방법이 있습니까?

+1

EF의 모든 버전에서 데이터베이스에 조인하는 기능이 지원되지 않습니다. 그러나 각 데이터베이스를 별도로 쿼리 한 다음 linq를 사용하여 개체에 조인 할 수 있습니다. – jrummell

답변

1

아니요, EntityFramework (6.x 및 Core 제외)로는 그렇게 할 수 없습니다. DbContext는 데이터베이스마다 있으며 동일한 DbContext 내에서만 조인을 수행 할 수 있습니다.

뷰를 생성하고 필요한 모델에 뷰를 매핑 할 수 있지만 iirc. 뷰의 매핑은 여전히 ​​EntityFramework Core의 로드맵에 있습니다. EntityFramework 6.x에서 사용할 수 있습니다.

편집 :

은 적어도 당신이 Linq에/유창함 API를 사용하여 그 일을 할 수 없다. 그래도 raw queries을 실행할 수 있습니다. catch : 프로젝트가 모델과 정확하게 일치해야하며 모델의 누락 된 필드가 없어야합니다. 엔티티가 아닌 개체에 대한 임시 매핑은 향후 버전의 EntityFramework Core에 대한 로드맵에 있습니다.

+0

제안에 감사드립니다. 원시 쿼리를 사용해보십시오. – Sanket

+1

SQL Server를 사용하는 경우 SQL Server에서 "동의어"를 사용해보고 다른 데이터베이스에서 테이블의 "동의어"를 만들고 EF 관점에서 로컬 테이블로 처리 할 수 ​​있습니다. 나는 그것을 스스로 시도하지 않았다. – Ricky