2012-03-14 4 views
0

내 데이터베이스에는 여러 위치를 가질 수 있고 위치가 여러 고객을 가질 수있는 고객이 있습니다. Linq To SQL 데이터 파일에 내 데이터베이스 디자인을 끌어 왔으며 이것이 현재 보이는 모습입니다. 내 양식에LINQ to SQL의 many to many

database

나는 고객의 ADRESS (또는 복수)를 검색하려합니다. 다음 코드를 시도했지만 항상 동일한 오류가 발생합니다. 요소에는 요소가 있지만 시퀀스에는 요소가 없습니다! (ID가 2 인 고객, ID가 1 인 위치 및 2,1이있는 조인 테이블)

public static locatie getLocationByCustomer(int id) 
    { 
     var query = (from v in dc.locaties 
         from e in v.locatie_klants 
         where e.klant_id == id 
         select v); 


     locatie locatie = query.First(); 
     return locatie; 
    } 

번역 : klant -> 고객 | 위치 -> 위치 || locatie_klant -> location_customer

내가 여기서 잘못하고있는 것이 확실하지 않습니다. 새로운 고객을 데이터베이스 (여러 위치 포함), 아이디어로 어떻게 저장할 것인지 궁금합니다.

도움 주셔서 감사합니다.

답변

1

검색어를 입력 한 고객이 특정 위치와 관련이없는 것 같습니다. 따라서 쿼리는 요소를 반환하지 않습니다. 이 자체는 문제가 아니지만 샘플에 FirstOrDefault() 대신 First()을 사용하고 있습니다. 주어진 클라이언트 ID에 대한 주소가없는 경우

  • First()이 예외가 발생합니다 :

    왜이 문제입니다.
  • FirstOrDefault()은 지정된 클라이언트 ID에 대한 주소가없는 경우 null을 반환합니다.

특히 검색어와 관련된 관계가 있다는 것을 확신 할 수 없으므로 FirstOrDefault()을 사용해야합니다. 여기

을 추가하는 방법에 대한 예제입니다 Customer + CustomerLocations :

var newCustomer = new klant() 
{ 
    // set neccessary properties 
}; 

var newCustomerLocation1 = new locatie_klant() 
{ 
    // set neccessary properties 
}; 

var newCustomerLocation2 = new locatie_klant() 
{ 
    // set neccessary properties 
}; 

using (var context = new DBContext()) 
{ 
    context.klants.Add(newCustomer); 
    context.locatie_klants.Add(newCustomerLocation1); 
    context.locatie_klants.Add(newCustomerLocation2); 
    context.SaveChanges(): 
} 

어떤 일반적인 조언 :
스틱 개발 목적을위한 영어 이름으로. 이것은/포럼에서 질문을 사용할 때 인생을 편하게 해주는 모범 사례로 간주됩니다.

+0

도움 주셔서 감사합니다. 내 조인 테이블이 비어있는 것으로 나타났습니다. 이전에 잘못된 조인 테이블을 보았습니다. 오늘 여러 지역에 고객을 추가하려고합니다. 코드를 작성할 때 대개 영어를 사용하지만,이 프로젝트를 진행하는 유일한 사람이 아니며 영어도 좋지 않으며 네덜란드어를 선호합니다. 도와 주셔서 감사합니다! :) – Schoof

+0

"locatie_klant"조인 테이블에 "위치"엔티티를 추가 할 수 없습니다. 여기서 내가 뭘하는지 잘 모르겠습니다! – Schoof

+0

@ThomasSchoof SImply 복사 및 붙여 넣기 오류'CustomerLocation1'과'CustomerLocation2'는'klant'가 아닌'locatie_klant' 유형이어야합니다. 코드가 업데이트되었습니다. 이제는 작동해야합니다. – ntziolis