Entity Framework 7에서 규칙을 어떻게 구성합니까?

ef-code-first entity-framework entity-framework-core

문제

EF7 이전에 나는 아래의 스 니펫을 사용하여 규칙을 삭제했습니다.

protected override void OnModelCreating(DbModelBuilder builder)
{
      builder.Conventions.Remove<NavigationPropertyNameForeignKeyDiscoveryConvention>();
      builder.Conventions.Remove<PrimaryKeyNameForeignKeyDiscoveryConvention>();
      builder.Conventions.Remove<PluralizingTableNameConvention>();
      builder.Conventions.Remove<PrimaryKeyNameForeignKeyDiscoveryConvention>();
      builder.Conventions.Remove<TypeNameForeignKeyDiscoveryConvention>();
}

Entity Framework 7에서 어떻게 동일한 결과를 얻을 수 있습니까?

수락 된 답변

협약 용 API는 현재 안정적이지 않습니다. https://github.com/aspnet/EntityFramework/issues/2589를 참조 하십시오 .

이 작업을 수행 할 수 있지만 종속성 삽입을 사용하여 OnModelCreating 이 컨텍스트에서 호출되는 방식의 내부 동작을 재정의해야합니다. DbContext 는 모델 빌더 (및 규칙)를 제공하는 ModelSource 인스턴스를 찾기 위해 종속성 삽입을 사용합니다.

모델 소스를 오버라이드하려면 의존성 삽입에 자신의 구현을 추가하십시오.

    var serviceCollection = new ServiceCollection();
    serviceCollection
        .AddEntityFramework()
        .AddSqlServer();
    serviceCollection.AddSingleton<SqlServerModelSource, MyModelSource>();
    var serviceProvider = serviceCollection.BuildServiceProvider();

    using(var context = new MyContext(serviceProvider))
    {
        // ...
    }

MyModelSource 구현은 MyModelSource ModelSource.CreateConventionSet() 재정의해야합니다. 원본 소스 보기




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