2013-05-08 2 views
0

사과 경우 :데이터베이스 우선 : 어떻게 모델해야합니까? 상위 참조 하위 참조 상위? 확실히 여기 이해하지 않지만, 내 피사체가 문제의

CREATE TABLE Employee 
(
Id INT IDENTITY(1,1) 
, Name VARCHAR(50) NOT NULL 
); 

CREATE TABLE Notes 
(
Id INT IDENTITY(1,1) 
,Employee_Id INT NOT NULL 
, AddedByEmployee_Id INT NOT NULL 
, Text VARCHAR(2000) 
); 

ALTER TABLE Notes 
ADD CONSTRAINT pk_Notes 
PRIMARY KEY (Id); 

ALTER TABLE Notes 
ADD CONSTRAINT fk_Notes01 
FOREIGN KEY (Employee_Id) 
REFERENCES Employee(Id) 
ON DELETE CASCADE; 

ALTER TABLE Notes 
ADD CONSTRAINT fk_Notes02 
FOREIGN KEY (AddedByEmployee_Id) 
REFERENCES Employee(Id); 

그래서, 직원이 하나 개 이상의 메모를 가질 수 있으며 각 노트가 추가됩니다 : SQL 서버에서

내가 가진 직원.

내가 내 Note.cls에두고 엔티티 프레임 워크이를 모델로 한

이 내 Employee.cls

public int Id { get; set; } 

public string Text { get; set; } 

public virtual Employee Employee { get; set; } 

public virtual Employee AddedByEmployee { get; set; } 

그리고 있습니다 :

public int Id { get; set; } 

public virtual List<Note> Notes { get; set; } 

이 (내가 있으리라 믿고있어 단지 한 번 employee.cls에서 notes 콜렉션을 참조해야 함).

잘못된 열 이름 'Employee_Id1'I 모델을로드 할 때

현재, 내가 얻을.

그리고 그것은 다음과 같은 SQL을 실행중인 :

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[Text] AS [Text], 
[Extent1].[Employee_Id] AS [Employee_Id], 
[Extent1].[AddedByEmployee_Id] AS [AddedByEmployee_Id], 
**[Extent1].[Employee_Id1] AS [Employee_Id1]** 
FROM [Notes] AS [Extent1] 
WHERE ([**Extent1].[Employee_Id1]** IS NOT NULL) 
     AND (**[Extent1].[Employee_Id1]** = 684) 

는 그래서 Employee_Id1라는 열을 기대하고 있어요 그러나 나는 그것을 기대하고있다 모르겠어요. 나는 이것 후에 다른 문제점이있을 것이라고 생각한다. 누구든지 아이디어가 있다면, 나는 그들을 듣고 싶습니다.

답변

0

필드 이름이 기본 규칙을 따르지 않으므로 두 개의 직원 탐색 속성에 대해 어떤 필드를 사용해야하는지 EF에 알려야합니다.

[ForeignKey("Employee_Id")] 
public virtual Employee Employee { get; set; } 

[ForeignKey("AddedByEmployee_Id")] 
public virtual Employee AddedByEmployee { get; set; } 
관련 문제