2016-07-01 2 views
0

사용자, 도메인 및 역할의 세 엔티티가 있습니다.엔티티 프레임 워크 코드에서 외래 키 관계를 설정하는 방법은 무엇입니까?

나는 세 가지 엔티티의 관계를 정의하는이 클래스를 가지고 :

public class UserDomainRole 
{ 
     [Key] 
     public int UserId { get; set; } 
     [Key] 
     public int DomainId { get; set; } 
     [Key] 
     public int RoleId { get; set; } 
} 

그래서 어떻게 내가 설정 UserDomainRole과 다른 세 개의 테이블 사이의 외래 키 관계? 이게 뭔가요?

public class DeniedDomainRole 
{ 
    [Key] 
    public int UserId { get; set; } 
    public virtual User User { get; set; } 
    [Key] 
    public int DomainId { get; set; } 
    public virtual Domain Domain { get; set; } 
    [Key] 
    public int RoleId { get; set; } 
    public virtual Role Role { get; set; } 
} 

엔티티 프레임 워크는 관계를 작동합니까?

답변

0

이 코드는 메시지와 함께 당신에게 예외를 줄 것이다 당신이 키를 제공하기 위해 사용 후 복합 기본 키를 당신이 가지고 만들려면 첫 번째 코드에서

"복합 기본 키 순서를 확인할 수 없습니다"/ 그런 열 순서 :

[Key, Column(Order=1)] 

어디

= 오더 테이블에 복합 기본 키/열 순서

당신이 가지고있는 관계의 종류에 따라 0
public class UserDomainRole 
{ 
     [Key, Column(Order=1)] 
     public int UserId { get; set; } 

     [Key, Column(Order=2)] 
     public int DomainId { get; set; } 

     [Key, Column(Order=3)] 
     public int RoleId { get; set; } 
} 

So how to I setup a foreign key relationship between UserDomainRole and other three table? Is it something like this?

:

  • 구성은 한 - 투 - 제로 - 또는 - 하나의 관계 : 여기

, 우리가 구성 할 두 엔티티 간의 일대일 또는 일대일 관계, 예. Entity1은 Entity2의 0 또는 단 하나의 인스턴스와 연관 될 수 있습니다. http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

  • 구성 원 - 투 - 제로 또는-One이 관계 : 두 개체 간의 여기

, 우리가 구성 할 한 - 투 - 제로 - 또는 - 한 관계, 예를 들어, Entity1은 Entity2의 0 또는 단 하나의 인스턴스와 연관 될 수 있습니다. http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

  • 구성 대다 관계 : 여기

, 우리는 학생 및 코스 엔티티 클래스 간의 다 대다 관계를 구성하는 방법을 배우게됩니다. 학생은 여러 과목에 참여할 수 있으며 여러 학생이 하나의 과목에 참여할 수 있습니다. 이런 식으로 http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

+0

안녕하세요 Bassam, 이제 Add-Migration AddDeniedDomainRole 명령을 실행하고 올바른 마이그레이션 코드를 포함하는 C# 클래스가 만들어 졌음을 알게되었습니다. 그러나 코드를 실행하면이 오류가 발생합니다. 데이터베이스가 생성 된 후 'XXX'컨텍스트를 지원하는 모델이 변경되었습니다.코드 첫 번째 마이그레이션을 사용하여 데이터베이스를 업데이트하는 것이 좋습니다. 마이그레이션 코드가 생성되면 엔티티 프레임 워크가 테이블을 업데이트하기 위해 무엇을 할 수 있습니까? – daxu

+0

당신은 첫 번째 update-database를 호출하거나 ssm –

+0

과 같은 도구를 사용하여 db를 삭제해야합니다. 시도해 보겠습니다. 또한 마이 그 레이션 코드에서 마이 그 레이션 코드에 다음 행이 추가 된 이유를 알고 계십니까? RenameTable (name : "dbo.DomainRole", newName : "RoleDomain"); 나는 그것이 필요하지 않다고 생각했기 때문에 마이그레이션 파일에서이 줄을 주석 처리했습니다. 그러나 "잘못된 개체 이름 'dbo.RoleDomain'"쿼리를 시도 할 때 오류가 발생했습니다. 내 코드를 검색하려고했는데, 모든 것이 여전히 RoleDomain이 아닌 DomainRole을 사용하고 있습니까? – daxu

0

당신이 할 수있는 사용자 모델

public int? UserUserId{get;set;} 
public virtual User User{get;set;} 

와의 관계? 당신의 외래를 Nullable로 만듭니다.

관련 문제