Я пытаюсь использовать Object.Equal()
для запроса с использованием существующего объекта.
Например Предположим, у меня есть класс с именем Term
.
Я создал объект ниже.
var term = new Term() {Code = "Plant - weed variety" };
Также в классе я переопределил метод Equals
, чтобы он был таким, как показано ниже:
public override bool Equals(object obj)
{
return Equals(obj as Term);
}
private bool Equals(Term t)
{
return t != null && t.Code == Code;
}
Но когда я выполняю приведенный ниже фрагмент кода, он возвращает ноль.
var dbTerm = context.Term.Where(t => t.Equals(term));
Когда я посмотрел SQL Profiler, я обнаружил, что запрос, выполняемый на стороне SQL, выглядит следующим образом:
exec sp_executesql N'SELECT TOP(1) [c].[pk], [c].[code], [c].[created_by], [c].[creation_date], [c].[description], [c].[hash_code], [c].[id], [c].[last_updated_by], [c].[last_updated_date], [c].[legacy_id_from_source], [c].[name], [c].[scope_pk], [c].[status_pk], [c].[vocabulary_pk]
FROM [term] AS [c]
WHERE @__term_0_Pk = [c].[pk]',N'@__term_0_Pk bigint',@__term_0_Pk=0
Вопрос заключается в следующем: почему запрос переводится как гдеиспользуя PK
вместо кода?
Спасибо