C#: как узнать, находится ли объект Linq2SQL в базе данных

Я хотел бы проверить, добавлен ли объект в базу данных. Итак, как я могу увидеть эту разницу между a и b?

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

Чтобы было понятнее, если у меня есть это:

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

Как узнать, нужно ли вставлять thing?


person Svish    schedule 02.06.2009    source источник
comment
Я нашел связанный вопрос, который может вам помочь: stackoverflow.com/questions/100068/   -  person bruno conde    schedule 02.06.2009
comment
Круто, тогда тоже проверю!   -  person Svish    schedule 02.06.2009


Ответы (1)


Если вы используете FirstOrDefault вместо First, это вернет null, если совпадений нет.

Что касается того, нужно ли вам вставлять - просто помните, было ли это пустым для начала:

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

В качестве альтернативы, если в Thing есть поле идентификатора, которое автоматически заполняется базой данных, вы можете просто использовать его, чтобы определить, есть ли оно уже в базе данных или нет.

person Jon Skeet    schedule 02.06.2009
comment
Да, это я знаю. Возможно, мой вопрос был недостаточно ясен... Я уточню свой вопрос. - person Svish; 02.06.2009
comment
Всегда ли идентификатор равен 0, если он не вставлен? Или что-то еще? - person Svish; 02.06.2009