Entity Framework 매핑에서 테이블을 참조하는 모든 외래 키를 찾기 위해 리플렉션을 사용하고 싶은데 어려움이 있습니다. 열의 이름을 원합니다. 그것들은 외래 키들입니다.엔티티 프레임 워크 - 외래 키 및 관계/연관성 반영
another post on SO에 따르면 리플렉션을 통해 표에서 탐색 속성을 쉽게 찾을 수 있습니다. 그러나 이것은 외래 키 값을 포함하는 속성 또는 열의 이름을 나에게주지 않습니다.
내가 이것을하려고하는 이유는 하나의 항목 테이블을 참조하는 많은 테이블 (거의 40 개)을 가지고 있기 때문입니다. 사용자가 "Andew"라고하는 항목 테이블에 새 값을 입력하면 관리자는 실제로 기존 항목 "Andrew"에 대한 오타가 있음을 알게됩니다. 이제 "Andew"에 대한 모든 참조를 찾고 Andrew에 대한 참조를 변경하려고합니다. 나는 이것을 효과적으로 수행하는 것을 선호 할 것입니다. 따라서 역 네비게이션 속성을 사용하는 것은 값을 수정하기 전에 값을로드해야하므로 너무 느립니다. 내가하고 싶은 것은 테이블과 열의 목록을 반영한 다음 데이터베이스에 직접 업데이트 명령을 내릴 수 있습니다. 그것은 다음과 같이 보일 것입니다 :
LINQ에서var command = String.Format("UPDATE [{0}] SET [{1}] = {{1}} WHERE [{1}] = {{0}}; ", fk.FromTableName, fk.FromColumnName);
dataContext.ExecuteStoreCommand(command, new Object[] { oldID, newID });
는 LINQ 자동 생성 된 코드에 ... 이것은 실제로 매우 쉬웠다 반사의 20 개 라인을 SQL로 내가 이루어졌다, 그러나 우리는 최근 EF 전환 및 I EF를 통해 외래 키 열의 이름을 찾을 수 없습니다.
간략한 예제 : Manager라는 내비게이션 속성과 ManagerID의 외래 키가있는 Employee라는 개체가있는 경우 Manager가 내 탐색 속성 및 기본 저장소임을 알고 싶습니다. ManagerID 속성입니다. 리플렉션 또는 메타 데이터를 통해이 작업을 엄격하게 수행하고 싶으므로 여기에서 dynmaic 쿼리를 작성할 수 있습니다. 당신은 당신이 관심있는 EntityType
에 도착 링크 된 문제의 아이디어를 사용하면
당신은 아래 표를 얻었으므로 나는 당신이 겪고있는 것을 이해하는 데 어려움을 겪고있는 유일한 사람이 아니라고 생각합니다. 'employee.managerId' 또는'employee.manager.id'를 할 수 있습니까? 당신은 컨벤션이 무엇인지 알 필요가 있습니다. DBA는 단순히 다른 방식으로 프로젝트에 영향을주지 않으면 서 DB를 간단히 변경할 수 없습니다. – Eonasdan
@ Eonasdan - 감사합니다. 왜 내가 downvoted되었는지 궁금 해서요. 나는 그것을 훨씬 더 명확하게하기 위해 전적으로 재 작성했다. 불행히도 이제는 훨씬 더 길어지고, 나는 그것을 짧게하려고 노력하고있었습니다. – pbarranis