У меня есть следующий класс, разработанный для обеспечения механизма защиты типов для передачи Int64
в мой бизнес-уровень:
class ClientID {
public ClientID(long i) { Value = i; }
//... other constructors
public long Value { get; private set; }
public static bool operator ==(ClientID lhs, long rhs) {
return lhs.Value == rhs;
}
}
Есть несколько других операторов сравнения, плюс некоторые Object
переопределения. Это позволяет мне написать код LINQ, который говорит:
ClientID searchID = something;
from i in someSQLdatasource
where i.ClientID == searchID
select i;
Синтаксис работает, но, конечно, LINQ to SQL не может сгенерировать код SQL для моего ClientID
класса. Я мог бы явно ссылаться на свойство Value
, но я думаю, что синтаксис, который я использовал, более элегантен.
Может ли кто-нибудь помочь мне заставить LINQ to SQL сгенерировать сравнение так, как если бы мой ClientID
класс был Int64
?