2011-10-05 2 views
0

외래 키를 기본 키로 사용할 수 있습니까? 그렇다면 누군가 내 코드를 도울 수 있습니까? 내가 하나 (또는 ​​없음) 과제 당 기록을 가지고 테이블을 만들려고 해요ASP.NET MVC - 기본 키로 외래 키?

One or more validation errors were detected during model generation:

System.Data.Edm.EdmAssociationEnd: : Multiplicity is not valid in Role 'AssignmentLocks_Assignment_Source' in relationship 'AssignmentLocks_Assignment'. Because the Dependent Role refers to the key properties, the upper bound of the multiplicity of the Dependent Role must be �1�.

: 나는 위의 코드에 대한

<Key()> 
Public Property AssignmentID() As Integer 
<ForeignKey("AssignmentID")> 
Public Overridable Property Assignment As Assignment 

Public Overridable Property User As User 

오류가 발생합니다.

+2

이것은 MVC와는 아무런 관련이 없습니다. –

답변

0

할당 당 하나의 (또는 없음) 레코드가있는 테이블을 만드는 경우 여러 행에 대해 해당 테이블에서 고유 한 AssignmentID를 어떻게 가질 수 있습니까? AssignmentNID가 고유 한 테이블을 만든 다음 할당 당 여러 레코드에 대해 AssignmetnRecordID를 만들어야합니다.

예제 코드는 C#으로되어 있으므로 C# 구문에 익숙합니다.

이 같은 데이터 모델 뭔가를 작성해야

public class xyz 
{ 
    public int AssignmentID { get; set; } 

    // Some other properties 

    [ForeignKey("AssignmetnRecordID")] 
    public virtual ICollection<Assignment> AssignmentRecords { get; set; } 
} 
0

그냥 속성으로 (죄송 C의 # 구문) 할당을 추가하기에 충분해야합니다

public class Xyz 
{ 
    public int XyzID { get; set; } 

    public int AssignmentId { get; set; } 

    [ForeignKey("AssignmentId")] 
    public virtual Assignment Assignment { get; set; } 
} 

public class Assignment 
{ 
    public int AssignmentID { get; set; } 

} 

XyzID 및 AssignmentID 것을 아마도 동일하지는 않지만 0 또는 1 할당 만 허용합니다.

+0

나는 이것이 잘못된 길로 가고 있다고 생각합니다. 고마워. – Tom

0

예 가능합니다. 한 가지 일반적인 예는 두 테이블 간의 다 대다 관계를 구현하는 테이블입니다. 예를 들어 역할과 사용자는 다 대다 관계를 가지며 두 ID의 조합은 좋은 기본 키를 만듭니다. 트릭은 당신이 t 신원 INT 필드의 경우와 같이 당신이 키의 값이 아닌 데이터베이스를 생성합니다 EF에게 허용 DatabaseGenerate 속성입니다. 당신이

public class MyClass 
{ 
    public int Id { get; set; } 

    public int? AssignmentId { get; set; } 
    public virtual Assignment Assignment { get; set; } 
    ... 
} 

Null 허용의 INT (INT는?) 0 또는 1의 관계를 허용해야하며, 생성 된 컬럼이 널 (NULL) 그래서

public class RoleUsers 
{ 
    [Key, DatabaseGenerated(DatabaseGeneratedOption.None), Column(Order = 0)] 
    public int   RoleId { get; set; } 
    public virtual Role Role { get; set; } 

    [Key, DatabaseGenerated(DatabaseGeneratedOption.None), Column(Order = 1)] 
    public Guid UserGuid { get; set; } 
} 

그러나, 귀하의 경우, 당신은 0 또는 1의 관계를 원한다. 단지 int 인 경우 열은 nullable이 아니며 관련 할당이 있어야합니다.

관련 문제