그래서 나는 진짜 문제가 있습니다. 데이터베이스에 추가 할 행에 외래 키를 추가합니다. 나는 그들이 모든지도를 완벽하게 잘 배치 할 수 있도록 모든 참조 설정을했습니다.Linq to SQL 데이터베이스 관리
문제는 모든 행을 제출할 때까지 쿼리를 실행하지 않고 키를 추가하려고한다는 것입니다.
예를 들어 테이블
**FirstNameTable** **LastNameTable** **People-Table**
Id | Value Id | Value Id | FirstNameID | LastNameID
---------------- --------------- ------------------------------
1 | Jeff 1 | jones 1 | 1 | 3
2 | Joe 2 | Richards 2 | 2 | 1
3 | John 3 | bobson 3 | 3 | 2
그래서 표 3은 3 외래 키 (FirstNameTable에 FirstNameId 링크, 사람들 - 테이블에 LastNameTableand ParentId 링크에 LastNameId 링크)가 있습니다. 이 예를 위해, 성 (姓)이 같은 사람이 결코 없을 것이라고 말하면됩니다.
테이블 3에 대한 새 항목을 추가하고 싶지만 기존 항목이있는 경우 기존 항목을 사용하거나 새 항목을 작성하고 싶습니다. 이제
People-Tabletb3 = new People-Table()
{
FirstNameTable = new FirstNameTable(){ Value = Jeff};
LastNameTable= new LastNameTable(){ Value = jones};
}
을하고
는
항상 내 다른 두 테이블에 새 항목을 만듭니다. 각 테이블의 각 행에 대해 다음 작업 수행
if ((from u in dc.Users where u.Name == name select u).Count() > 0)
// just grab the id
else
// make it then grab the id
더 많은 쿼리를 수행하고 업로드 속도가 느려지므로 실제로 옵션이 아닙니다.
내 질문은 이름과성에 대해 기존 행을 사용하거나 존재하지 않는 경우 새 행을 작성할 LINQ를 사용하여 새 피플 테이블 행을 작성하는 방법입니다. if-else를하지 않고서.
정말 필요한가요? 또는 People-Table에서 [FirstName]과 [LastName]의 복합 키를 만들 수 있습니다. – PoweredByOrange
제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야한다"는 것을 참조하십시오. –
많은 질문에 추가하지 않고도 이미 존재하는지 여부에 따라 다른 테이블의 요소를 추가하거나 사용하는 방법에 대한 질문이 더 많습니다. 각 시간을 입력하고 각 행에 대한 추가 쿼리를 실행하기 만해도 약 500 - 600 행이 있으므로 제출 시간이 크게 늘어납니다. – Crypic2009