Nous essayons de faciliter l'écriture de code fortement typé dans toutes les zones de notre système, donc plutôt que de définir var sortColumn = "FirstName"
, nous aimerions dire sortOption = (p => p.FirstName)
. Cela fonctionne très bien si le sortOption est de type Expression<Func<Person, object>>
(nous utilisons des génériques dans notre code mais cela n'a pas d'importance). Cependant, nous rencontrons des problèmes pour les relations plusieurs-à-plusieurs parce que cette notation tombe en panne.Existe-t-il une MemberExpression qui gère une relation many-to-many?
Tenir compte de ce code simple:
internal class Business
{
public IQueryable<Address> Addresses { get; set; }
public string Name { get; set; }
}
internal class Address
{
public State MyState { get; set; }
}
internal class State
{
public string Abbreviation { get; set; }
public int StateID { get; set; }
}
Est-il possible d'avoir ce genre de MemberExpression
pour identifier la colonne StateID hors d'une entreprise? Encore une fois, le but de l'utilisation de ceci n'est pas de renvoyer un objet StateID, c'est simplement d'identifier cette propriété hors de cette entité (pour le tri, le filtrage et d'autres buts).
Il me semble qu'il devrait y avoir un moyen de le faire, même si ce n'est pas aussi joli que foo = business.Addresses.SomeExtension(a => a.State.StateID);
. Est-ce vraiment possible?
Si plus de fond est nécessaire, jetez un oeil à this old question of mine. Nous avons depuis mis à jour le code de manière significative, mais cela devrait vous donner l'idée générale détaillée du contexte derrière cette question.
Ceci est une solution non idéale, mais c'est ce que nous faisons pour l'instant. Semble fonctionner plutôt bien même si cela ne semble pas tout à fait raison. – Jaxidian