Entity Framework에서 복수형 테이블 이름 충돌
이 문제는 MySQL에서 Entity Framework를 사용하고 복수형 이름으로 테이블을 생성하려고 할 때 발생합니다. 단일 모델에서.
문제:
제공된 코드에서 뷰는 "votes"라는 테이블을 예상하지만 Entity Framework는 "votes"라는 테이블을 생성합니다. MySQL에서 투표하세요. 이러한 불일치로 인해 "'mydb.vote' 테이블이 존재하지 않습니다."라는 예외가 발생합니다.
해결책:
이 문제를 해결하려면 다음 단계를 수행할 수 있습니다. take:
-
OnModelCreating에서 기본 생성자 호출 제거:
원래 기본 생성자 호출은 OnModelCreating에서 복수화를 구현하는 데 사용되었습니다. 그러나 복수화 동작을 방지하려면 이 호출을 제거하는 것이 좋습니다.
-
PluralizingTableNameConvention 제거:
코드에는 처음에 PluralizingTableNameConvention을 제거하는 줄이 포함되었습니다. 이는 테이블 이름의 자동 복수화를 방지하기 위해 여전히 필요합니다.
-
기존 데이터베이스 삭제:
기존 데이터베이스를 삭제한 다음 Entity Framework에서 새 데이터베이스를 생성하도록 허용하는 것이 좋습니다. 하나. 이렇게 하면 올바른 테이블 이름이 사용됩니다.
-
데이터베이스 생성 권한 확인:
연결 문자열에 지정된 MySQL 사용자에게 새 데이터베이스를 생성할 수 있는 충분한 권한이 있는지 확인하세요.
-
ApplicationStart에서 복수화 제거:
코드는 원래 DropCreateDatabaseAlways를 사용하여 복수화를 비활성화했습니다. 그러나 이는 Database.SetInitializer(new DropCreateDatabaseAlways())로 잘못 구현되었습니다. 대신 Database.SetInitializer(new myDBInitializer())여야 합니다.
이러한 변경 사항을 구현한 후 Entity Framework는 MySQL에서 "투표" 테이블을 올바르게 생성하여 테이블 이름 충돌을 해결하고 제대로 작동하는지 확인하세요.
위 내용은 내 모델이 복수형인 경우에도 Entity Framework가 MySQL에서 단일 테이블을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!