MVC5를 EF6과 함께 사용하여 두 개의 응용 프로그램을 하나의 데이터베이스에 배치하고 완전히 별도로 실행할 수 있도록 모든 응용 프로그램 테이블 이름 앞에 접두어를 추가하려고합니다. 두 가지 다른 사용자/역할/클레임/등이 필요하므로 다른 앱에서 이미 존재하는 동일한 AspNet 테이블 이름을 사용할 수 없습니다.접두사 EF6의 모든 테이블 이름
this SO question을 통해 읽은 후, 나는 대답을 발견
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Types().Configure(c => c.ToTable("prefix_" + c.ClrType.Name));
}
이 추가 마이그레이션을 사용하여 오류가 발생을, 그래서 오류를 진압하는 나의 방법에
base.OnModelCreating(modelBuilder);
를 추가했다.
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Types().Configure(c => c.ToTable("prefix_" + c.ClrType.Name));
}
그러나이 유형을 구성 설정 코드의 위 또는 아래에 추가할지 여부에 관계없이 AspNet 테이블은 이름을 전혀 변경하지 않습니다. 형식 구성 줄이 완전히 무시되는 것과 같습니다. 내가 이렇게 할 경우
그것은, 그러나, 잘 이름을 변경 :
물론, 단지 AspNetUsers 테이블을 변경, 그건modelBuilder.Entity<ApplicationUser>().ToTable("SomeFunkyTableName");
. 다른 모델을 변경하기 위해 어떤 모델을 지정해야할지 모르겠습니다.
내 전반적인 목표는 다음 표를 가지고, 바람직하게는 수동으로 할당 할 필요가 없습니다 : prefix_AspNetRoles prefix_AspNetUserClaims prefix_AspNetUserLogins prefix_AspNetUserRoles prefix_AspNetUsers
을이 외에도, 나는 모든 다른 테이블 내 코드 - 원하는 먼저 동일한 접두사를 갖도록 만듭니다. 이것을 어떻게 할 수 있습니까? 내 코드가 무시되는 이유는 무엇입니까?
감사를 사용할 수있는 테이블 당 스키마를 설정하려면 기본 스키마
을 설정하려면 다음을 사용할 수 있습니다. 좋은 아이디어와 완벽하게 작동합니다. SQL Server에 익숙하지 않아 스키마가 새로운 것입니다. 일반적으로 테이블 이름의 접두어를 붙이십시오. – damccull