>  기사  >  데이터 베이스  >  내 모델이 복수형인 경우에도 Entity Framework가 MySQL에서 단일 테이블을 생성하는 이유는 무엇입니까?

내 모델이 복수형인 경우에도 Entity Framework가 MySQL에서 단일 테이블을 생성하는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-31 08:03:30296검색

Why Does Entity Framework Create Singular Tables in MySQL Even When My Model is Plural?

Entity Framework에서 복수형 테이블 이름 충돌

이 문제는 MySQL에서 Entity Framework를 사용하고 복수형 이름으로 테이블을 생성하려고 할 때 발생합니다. 단일 모델에서.

문제:

제공된 코드에서 뷰는 "votes"라는 테이블을 예상하지만 Entity Framework는 "votes"라는 테이블을 생성합니다. MySQL에서 투표하세요. 이러한 불일치로 인해 "'mydb.vote' 테이블이 존재하지 않습니다."라는 예외가 발생합니다.

해결책:

이 문제를 해결하려면 다음 단계를 수행할 수 있습니다. take:

  1. OnModelCreating에서 기본 생성자 호출 제거:
    원래 기본 생성자 호출은 OnModelCreating에서 복수화를 구현하는 데 사용되었습니다. 그러나 복수화 동작을 방지하려면 이 호출을 제거하는 것이 좋습니다.
  2. PluralizingTableNameConvention 제거:
    코드에는 처음에 PluralizingTableNameConvention을 제거하는 줄이 포함되었습니다. 이는 테이블 이름의 자동 복수화를 방지하기 위해 여전히 필요합니다.
  3. 기존 데이터베이스 삭제:
    기존 데이터베이스를 삭제한 다음 Entity Framework에서 새 데이터베이스를 생성하도록 허용하는 것이 좋습니다. 하나. 이렇게 하면 올바른 테이블 이름이 사용됩니다.
  4. 데이터베이스 생성 권한 확인:
    연결 문자열에 지정된 MySQL 사용자에게 새 데이터베이스를 생성할 수 있는 충분한 권한이 있는지 확인하세요.
  5. ApplicationStart에서 복수화 제거:
    코드는 원래 DropCreateDatabaseAlways를 사용하여 복수화를 비활성화했습니다. 그러나 이는 Database.SetInitializer(new DropCreateDatabaseAlways())로 잘못 구현되었습니다. 대신 Database.SetInitializer(new myDBInitializer())여야 합니다.

이러한 변경 사항을 구현한 후 Entity Framework는 MySQL에서 "투표" 테이블을 올바르게 생성하여 테이블 이름 충돌을 해결하고 제대로 작동하는지 확인하세요.

위 내용은 내 모델이 복수형인 경우에도 Entity Framework가 MySQL에서 단일 테이블을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.