Entity Framework Core에서 복수의 DbSet 속성 이름을 사용하여 DbContext를 스캐 폴딩하는 방법?

c# entity-framework entity-framework-core sql-server visual-studio-2015

문제

Package Manager Console 에서 Scaffold-DbContext 명령을 사용하여 기존 SQL Server 데이터베이스에 대한 컨텍스트와 엔터티를 만들고 다시 만듭니다.

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

그것은 한가지를 제외하고는 완벽하게 작동합니다 : DbSet 의 속성 이름은 단수 형태입니다 :

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

나는이 이름들을 복수형 ( Requests 등)으로 선호한다. 웹 검색 외에도 명령 구문을 확인했습니다.

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

그리고이 행동을 바꾸는 데 아무 것도 발견하지 못했습니다. 다음은 내 packages.config .

Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "my connection string"

스캐 폴딩 할 때 DbSet 이름을 복수화하는 방법은 무엇입니까?

UPDATE 2017-04 : DB 이제 Entity Framework Core 1.1에서 복수형을 최초로 스캐 폴딩 할 수 있습니다. 자세한 내용은 내 대답 읽기.

수락 된 답변

Pluralization은 RC1에서 EF7에서 지원되지 않습니다. EF7 스캐 폴딩의이 제한 사항 및 기타 제한 사항은 여기에서 추적하고 있습니다. https://github.com/aspnet/EntityFramework/issues/4038


인기 답변

EF Core 1.1에서 복수화가 가능합니다. Rowan Miller 가 블로그에서 설명 했듯이 Inflector를 설치하고 스캐 폴딩 할 때 복수화를 제어하기 위해 IDesignTimeServices 를 구현해야합니다. 그러나 다음 사항에 유의하십시오.

우리는 이러한 서비스를 * .internal 네임 스페이스에 넣고 언제든지 API를 중단 할 권한을 보유합니다.

그래서 전체 코드 예제가 여기에 복사되지 않는 이유입니다. 이 대답은 같은 이유로 받아 들여지지 않습니다. 안정적인 API를 얻을 때까지 기다리는 것을 선호합니다.

고려해야 할 또 다른 문제입니다.이 솔루션은 공급자에 따라 다릅니다. 그것은 SQL Server (나는 그것을 테스트)와 잘 작동합니다. 다른 DBMS 프로 바이더는 아직이 API를 서포트하고 있지 않습니다. 예를 들어, 최신 Npgsql.EntityFrameworkCore.PostgreSQL 1.1.0은 사용자 지정 IDesignTimeServices 가 사용되는 경우 스캐 폴드에서 실패합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.