LINQ에서 외국 열쇠와 안내가 어떻게 처리됩니까?
문제
이것을 예로 사용하는 것만 ...
다음은 내 userprofile 테이블의 열입니다.
profileId (기본 키)
userID (외국 키)
주소
전화 번호
이제 LINQ를 사용하여 데이터베이스에 새 사용자를 추가하고 싶을 때는 다음과 같습니다.
UserProfile profileToAdd;
profileToAdd.ProfileID = 0;
profileToAdd.Address = "123 MyStreet";
profileToAdd.PhoneNumber = "123-4567";
/* How do I add in the UserID here? */
_myDB.AddToUserProfiles(profileToAdd);
몇 가지 질문 ...
내가 알아야 할 외국 키를 다루는 데 특별한 것이 있습니까, 아니면 주소 나 전화기와 마찬가지로 할당 할 수 있습니까?
userID는 GUID이며 현재 사용자의 userID에서 검색해야합니다. 멤버십 클래스 나 사용자 클래스에 액세스 할 수없는 것 같습니다 (이것은 C# 라이브러리이므로 어떻게 든 참조가 필요하다고 생각하지만 내 프로젝트는 이미 라이브러리를 참조하고 있으므로 참조 할 수 없거나 다시 참조 할 수 없습니다. 원형 의존성이 있음)
나는지도를 다루는 방법을 잘 이해하지 못합니다. 구현할 때
getProfileByUserName(string userName)
, 여기 내 문제가 있습니다 ...
먼저 userid를 검색 할 수 없습니다. 여기 내가 시도한 내용이 있습니다.
Guid currUser = (Guid)from user in _ myDB.aspnet_Users
where user.UserName == userName
select new { user.UserId };
그러나 어떤 이유로 든 가이드에 캐스트 할 수 없다고 말합니다.
이 질문들에 대한 통찰력을 제공 할 수 있다면 나는 그것을 크게 감사하겠습니다!
감사,
매트
해결책
데이터베이스에 외국 키 관계에 대한 적절한 제약이 포함 된 경우, 회원이 있어야합니다. UserProfile
클래스, 그것은 a를 가리 킵니다 User
물체. 이름이 조금 이상 할 수 있습니다. UserProfileUser
또는 그런 것.
그러나 다이어그램 에서이 이름을 변경할 수 있습니다. 사용자 엔티티 객체에 대한 포인터를 설정하면 프레임 워크가 올바른 ID를 할당합니다.