2009-06-02 5 views
5

Tôi muốn kiểm tra xem thực thể đã được thêm vào cơ sở dữ liệu chưa. Vì vậy, làm cách nào tôi có thể thấy sự khác biệt này giữa ab?C#: Cách xem thực thể Linq2SQL có trong cơ sở dữ liệu

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

Để làm cho nó rõ ràng hơn, nếu tôi có điều này:

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

Làm thế nào tôi có thể thấy nếu thing cần phải được chèn?

+0

Tôi đã tìm thấy một câu hỏi có liên quan có thể giúp bạn: http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-existent –

+0

Tuyệt vời, cũng sẽ kiểm tra điều đó! – Svish

Trả lời

4

Nếu bạn sử dụng FirstOrDefault thay vì First, điều này sẽ trả lại null nếu không có kết quả phù hợp.

Đối biết liệu bạn cần phải chèn - chỉ cần nhớ hay không nó là null để bắt đầu với:

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

Ngoài ra, nếu có một trường ID trong Thing mà được tự động bởi cơ sở dữ liệu, bạn chỉ có thể sử dụng để phát hiện xem nó đã có trong cơ sở dữ liệu hay chưa.

+0

+1 yep, đây là câu trả lời – andy

+0

Vâng, tôi biết. Có lẽ câu hỏi của tôi không đủ rõ ràng ... Tôi sẽ giải thích trong câu hỏi của tôi. – Svish

+0

Id có luôn là 0 nếu không được chèn không? Hay nó là cái gì khác? – Svish