0

Как правило, можно было бы извлечь запись из первичного ключа, используя следующий запрос (или мы могли бы использовать Find(), в зависимости от обстоятельств):Entity Framework, 6: ToString() Сравнение первичных ключей

using (var context = new SomeContext()) 
{ 
    entity = context.Users.SingleOrDefault(x => x.Id == id); 
} 

Какое влияние оказывает выполнение одного и того же запроса, но с ToString() - значениями первичного ключа?

Как так:

using (var context = new SomeContext()) 
{ 
    entity = context.Users 
        .SingleOrDefault(x => x.Id.ToString() == id.ToString()); 
} 
+1

Почему стоит остановиться? Почему бы не вызвать '.ToString()' еще несколько раз и добавить '' '' для хорошей меры? В более серьезной заметке вы должны иметь возможность отслеживать SQL, который генерируется без каких-либо проблем, и убедиться в этом, если есть разница. Кроме того, существует ли разница в зависимости от типа 'Id'. – hvd

+0

Да, зачем спрашивать здесь, пока вы можете сделать простой тест? Мы даже не можем ответить на ваш вопрос. –

ответ

1

Кажется мне, что если у вас есть как таблица 1 миллион элементов ваш запрос может занять дополнительно 1 секунду для выполнения. Буквально такой же, как у двойного

convert(nvarchar(36), Id) 

+ стоимость сравнить. Вы можете представить, что короткое замыкающее колесо сравнивает x36 раз.

+0

Возможно, вы захотите попробовать: http://www.hibernatingrhinos.com/products/efprof – Margus

Смежные вопросы