2009-06-02 4 views
5

엔티티가 이미 데이터베이스에 추가되었는지 확인하고 싶습니다. 그렇다면이 차이는 ab 사이에서 어떻게 구할 수 있습니까? 나는이있는 경우 C# : Linq2SQL 엔터티가 데이터베이스에 있는지 확인하는 방법

var a = dataContext.Things.First(x => x.Name == something); 
var b = new Thing { Name = something }; 

, 그것은 명확하게하려면 : thing 요구를 삽입 할 경우 내가 볼 수있는 방법

var thing = dataContext.Things.FirstOrDefault(x => x.Name == something) 
      ?? new Thing { Name = something }; 

?

+0

나는 당신을 도울 수있는 관련 질문을 발견했다 : http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-existent –

+0

쿨, 체크 아웃 할 것이다. – Svish

답변

4

First 대신 FirstOrDefault을 사용하면 일치하는 항목이없는 경우 null이 반환됩니다. 자동으로 데이터베이스에 의해 채워집니다 Thing의 ID 필드가 있다면,

var a = dataContext.Things.FirstOrDefault(x => x.Name == something); 
bool needsInsertion = (a == null); 
a = a ?? new Thing { Name = something }; 

또는 당신을 : 그냥 시작하는 경우는 null인지 여부를 기억 - 삽입 할 필요가 있는지 알고에 관해서는

그것을 사용하여 이미 데이터베이스에 있는지 여부를 감지 할 수 있습니다.

+0

+1 예, 답변입니다. – andy

+0

예, 알고 있습니다. 어쩌면 나의 질문이 충분히 명확하지 않았을 것입니다 ... 나는 내 질문에 대해 자세히 설명 할 것입니다. – Svish

+0

삽입하지 않으면 id가 항상 0입니까? 아니면 다른 것입니까? – Svish

관련 문제