2008-11-28 4 views
0

LinqToEntities를 사용하려고하는데 데이터 모델에 외래 키 필드가 없다는 사실을 발견했습니다. 그게 레코드를 추가하려고 할 때 약간의 문제를 일으키는 것 같습니다.LinqToEntities 및 외래 키

주위를 읽을 때 레코드를 추가 할 때 다음과 같은 작업을 수행 할 수 있음을 알았습니다 (제품에 Categories 테이블에 외래 키가 있음).

Product myProduct = new Product(); 
myProduct.ProductName = ProductName; 
myProduct.Categories = db.CategorySet.Where(c => c.CategoryID == CategoryID).First(); 
db.AddToProductSet(myProduct); 
db.SaveChanges(); 

이렇게하는 것이 더 좋은 방법 일 것입니다. 하지만 내 질문은 정말 LinqToEntities에서 어떻게 작동합니까? 이것이 단순히 외래 키 (예 : myProduct.CategoryID = categoryid)를 제공하는 것보다 훨씬 복잡하다고 생각됩니다.

테이블에 5 개의 외래 키가있는 경우이를 연결하기 위해 5 개의 개체를 검색해야합니다.

위의 내용을 이해하고 이점을 얻을 수 있지만 다른 테이블에 단일 외래 키가있는 데이터베이스에 1 개의 레코드를 추가하려는 경우 이점이 보이지 않습니다.

답변

1

Linq To Entities를 처음 접했을 때 내가했던 것과 똑같은 생각을 가진 사람이라면 ... Linq To Entities는 다음과 같습니다. 외래 키를주는 대신 실제 개체를 참조해야합니다.

성능면에서는 좋지 않지만 성능이 나쁘지는 않습니다. 사실 그것은 린크 투 SQL보다 낫다.