Y at-il quelqu'un avec de l'expérience dans l'écriture de fournisseurs Linq personnalisés? Ce que j'essaie de faire est de dire si une MemberExpression qui est une propriété sur un objet métier doit être incluse dans le SQL, ou traitée comme une constante, car elle provient d'une variable locale qui se trouve être une entreprise objet.Détermination de la portée d'une cible MemberExpressions
Ainsi, par exemple, si vous avez ceci:
Customer c = LoadCustomerFromDatabase();
var orders = from o in db.Orders() where o.CustomerID == c.CustomerID select o;
Pour le moment, mon traducteur de requête essaiera d'exécuter SELECT * FROM orders o where o.CustomerID = c.CustomerID
, ce qui bien sûr ne fonctionne pas. Ce que je voudrais faire est d'examiner la MemberExpression sur le c.CustomerID
et essayer de travailler si c'est une variable locale, ou juste quelque chose qui est utilisé dans le cadre de l'expression Linq.
J'ai réussi à le faire comme un second passage sur la requête, à la recherche de champs que SQL Server ne sera pas capable de lier, et d'injecter leurs valeurs à la place, mais si possible je voudrais que tout se passe en même temps. J'ai essayé de regarder l'expression Type
propriété, et IsAutoClass
, mais c'était juste une supposition parce qu'il contenait le mot Auto. Et ça n'a pas marché :)