나는이처럼 보이는 데시벨을위한 모델을 정의합니다. 외래 키가 기본 키가 아닌 테이블의 열을 모델로 설정해야합니다. 내 질문 : 모델을 정의하고 기본 키를 사용하지 않고 엔티티 간의 관계를 연결하려면 어떻게해야합니까?깊은 관계/중첩 된 모델
답변
이러한 테이블을 어떻게 연결할 수 있습니까? 일반적으로 데이터베이스의 테이블 구조를 (대부분의 경우) 미러링 할 모델 설정이 있습니다. 아래는 모델을 설정하는 방법입니다. User
은 UserRoles
의 모음을 가지고 있으며 각 모음은 해당 레코드와 함께 Role
입니다.
internal class User
{
public User()
{
UserRoles = new List<UserRole>();
}
[Key]
public int UserId { get; set; }
public ICollection<UserRole> UserRoles { get; set; }
}
internal class UserRole
{
[Key]
public int UserRoleId { get; set; }
public int UserId { get; set; }
public int RoleId { get; set; }
[ForeignKey("UserId")]
public User User { get; set; }
[ForeignKey("RoleId")]
public Role Role { get; set; }
}
internal class Role
{
public Role()
{
UserRoles = new List<UserRole>();
}
[Key]
public int RoleId { get; set; }
public string RoleName { get; set; }
public ICollection<UserRole> UserRoles { get; set; }
}
그래서 기본적으로 사용자 및 UserRole
사이에 많은에 하나, 그리고 클래스 UserRoles
을 선언하는 많은 Role
사이 UserRole
당신은 필요가 없습니다에 하나가, EF 코드가 처음 만들 것 장면 뒤에 필요한 관계 테이블이 모두 당신이 필요합니다
public class User
{
public int Id {get;set;}
public virtual ICollection<Role> Roles {get;set;}
}
public class Role
{
public int Id {get;set;}
public virtual ICollection<User> Users {get;set;}
}
다음 우선 당신의 OnModelCreating
:
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<User>()
.HasMany(u => u.Roles).WithMany(r => r.Users)
.Map(t => t.MapLeftKey("UserId")
.MapRightKey("RoleId")
.ToTable("UserRoles"));
}
페이로드가있는 many-to-many
이 필요한 경우에만 조인 테이블을 선언해야합니다. 이 게시물 확인 many-to-many with payload
어떻게하면 일대 다와 함께 할 수 있을까요? 역할 모델에서 사용자를 가져 오는 경우? – Arcadian
@ magic-c0d3r, 그래서'User'는 하나의'Role'을 가집니까? 와'Role'은 많은'Users'에 속해 있습니까? 응답을 확인하십시오. – SOfanatic
사용자는 많은 역할을 가지고 있지 않으며 역할은 많은 사용자에게 속할 수 있습니다. 그러나 나는 그것을 내 모델에서 보여주고 싶지 않습니다. 이제는 많은 역할을 가진 사용자 만이 필요합니다. UserRole 클래스에 사용자를 포함시켜야 만하지 않는 한 – Arcadian
- 1. 넓고 깊은 텐서 흐름 모델 저장
- 2. Backbone.js에서 깊은 모델 계층 구조를 표현하는 방법
- 3. dnn_hidden_units 매개 변수가 tensorflow 넓고 깊은 모델
- 4. Ember 깊은 중첩 URL 및 모델
- 5. 3 깊은 중첩 된 형태
- 6. 깊은 중첩 된 if 문은
- 7. 깊은 중첩 된 속성과 PARAMS와 attr_accessible
- 8. 깊은 중첩 된 문서 문제에 MongoDB MapReduce
- 9. CakePHP의 HABTM 깊은 조건
- 10. 깊은 연관을위한 CakePHP 조건
- 11. 깊은 JSON 직렬화는
- 12. C# (깊은)에서 깊은 개체 복제하기
- 13. 깊은 겹침이 Accurev에서 삭제 된 파일로 병합
- 14. JsRender 깊은 중첩 된 데이터 템플릿
- 15. 임의로 깊은 펑터 구성에 함축 된 스칼라
- 16. Linq에 중첩 된 목록 3 깊은
- 17. 깊은 모델 연결을 기반으로 CakePHP에서 어떻게 찾거나 검색합니까?
- 18. 깊은 기능
- 19. 깊은 사본
- 20. 깊은 객체
- 21. 범위 깊은
- 22. 깊은 복사
- 23. 깊은 $는
- 24. 백본 깊은 복제 문제는
- 25. Eager loading laravel 3 깊은 관계
- 26. 조롱 스텁 깊은 유산은
- 27. 체계에 대한 깊은 역방향
- 28. Elisp 깊은 복사 - consing은
- 29. CakePHP의 깊은 주문을
- 30. 깊은 텍스트 파일 처리
컴파일되었지만 목록에로드 된 역할이 없습니다. 귀하의 예에서 역할은 UserRole에 어떻게 매핑됩니까? – Arcadian
@ magic-c0d3r Righto, UserRole과 Role 사이에 User와 UserRole 사이에 one to many와 one to many를 가지도록 코드 샘플을 업데이트했습니다. 이게 당신이 염두에 두었던 것입니까? – jstromwick
RoleInfo가 UserRole의 컬렉션 인 이유는 무엇입니까? 어떤 도움이라도 대단히 감사합니다. – Arcadian