[SQL] 엔티티 프레임 워크 데이터베이스 먼저 대다
SQL엔티티 프레임 워크 데이터베이스 먼저 대다
나는 데이터베이스에서 엔티티 프레임 워크 모델을 만들었습니다. - UserRole - 역할 사용자 : 나는 다 대다 관계를 가지고있다.
EF는 사용자 엔티티와 역할 엔티티에 UserRole 엔티티 및 UserRoles 탐색 속성을 만들었지 만 오히려 역할에서 사용자의 역할 및 사용자이있을 것이다. 즉, 모델 디자이너를 통해 설계 할 수 있습니까? 어떻게 중간에 테이블을 수동으로 다 대다 관계를 구성 할 수 있습니다?
해결법
-
==============================
1.UserRole 테이블은 사용자 및 역할 테이블에 대한 외래 키가 아닌 컬럼으로 포함하는 경우 EF는 일반적으로, 중간 모델을 생성합니다.
UserRole 테이블은 사용자 및 역할 테이블에 대한 외래 키가 아닌 컬럼으로 포함하는 경우 EF는 일반적으로, 중간 모델을 생성합니다.
당신이 UserRoles 테이블에 단 2 열이 있다면 당신이 원하는 그래서, 사용자 및 역할 테이블에 모두 FKS (심지어 대리 키), EF는 모델을 만들 것입니다. 즉 원하는 동작의 자동 생성을 위해, 이동하는 방법 중 하나입니다 그래서 (중간 모델 제외). 테이블에 단 2 열이.
이 테이블의 다른 키가 아닌 열 (데이터)이있는 경우, 그때 EF가 무엇을하고 있는지 정확합니다. 당신은 중간 엔티티가 필요합니다.
그리고 당신은 더 이상 당신의 DB를 수정하지 않고 모델이 중간 테이블을 필요로하지 않는 키가 아닌 열이없는 경우에, 당신은 수동으로 OnModelCreating을 수정할 수있는 많은 - 투 지정 - 많은 및 중간 테이블을 숨 깁니다.
여기서 모든 단계는 다음과 같습니다
예를 들면 사용자 클래스,
public virtual ICollection<Role> Roles { get; set; }
및 사용자 생성자
this.Roles = new HashSet<Role>(); // on the OnModelCreating method, add this snippet modelBuilder.Entity<User>().HasMany<Role>(u => u.Roles) .WithMany(r => r.Users) .Map(ru => { ru.MapLeftKey("UserId"); ru.MapRightKey("RoleId"); ru.ToTable("UserRole"); });
from https://stackoverflow.com/questions/35527175/entity-framework-database-first-many-to-many by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] mysql을 - 열 성능 대 만들기 행 (0) | 2020.07.11 |
---|---|
[SQL] 테이블에 계층 적 데이터의 모든 자식 노드를 계산 (0) | 2020.07.11 |
[SQL] PostgreSQL은 부분 인덱스를 사용하지 않습니다 (0) | 2020.07.11 |
[SQL] XAMPP에 연결 SQLSRV (0) | 2020.07.11 |
[SQL] ORDER BY 별칭이 작동하지 않습니다 (0) | 2020.07.11 |