J'ai une structure simple de table dans SQL Server:Création d'une propriété interrogeable pour une LINQ à l'entité sql
Une table stockant une liste de vélo (vélo) et une deuxième table stockant une liste historique des propriétaires du vélo (Les propriétaires). En utilisant Linq 2 SQL, j'ai généré un modèle qui me donne une entité 'Bike' avec une relation de 1 à plusieurs 'Owner' appelée 'HistoricalOwners'.
So far so good ...
Maintenant, j'ai beaucoup de questions où je suis intéressé par le propriétaire actuel. Le propriétaire actuel étant l'entrée la plus récente dans la table des propriétaires.
repo.Bikes().Where(b => b.HistoricalOwners.OrderByDescending(o => o.Date).First().Name == "Joe")
Cela fonctionne, mais c'est un peu moche, et ne dit pas vraiment ce que je demande. Ce serait bien de créer une propriété 'CurrentOwner' sur mon entité Bike et d'interroger celle-ci.
public Owner CurrentOwner
{
get
{
return HistoricalOwners.OrderByDescending(o => o.Date).First();
}
}
Je pourrais interroger comme ceci:
repo.Bikes().Where(b => b.CurrentOwner.Name == "Joe")
Cette compile, mais cources lors de l'exécution il échouera avec:
Le membre 'CurrentOwner' n'a pas de traduction pris en charge à SQL.
Ce qui est totalement logique.
Est-ce que quelqu'un sait comment je pourrais être capable de créer un CurrentOwner d'une manière qui laisserait cette requête fonctionner?
J'ai fait des recherches en obtenant CurrentOwner pour retourner un arbre d'expression au lieu d'une instance, mais je n'ai jamais eu d'endroit où j'étais vraiment content.
Ensuite, je me suis demandé si je pouvais ajouter une relation supplémentaire à mon référentiel linq 2 sql pour CurrentOwner et le contraindre à être un à un. Mais je ne semble pas être en mesure de le faire avec linq 2 sql. Je pense que je peux le faire avec les entités Linq 2, mais ce n'est pas une option pour le moment.
Quelqu'un a-t-il eu des idées sur comment je pourrais faire ce travail?
Merci à l'avance,
RMK
Cela ne va pas fonctionner, c'est pas différent de First() il ne sait toujours pas comment transformer CurrentOwner en SQL parce que CurrentOwner est une propriété et en tant que tel ne peut pas être traduit en une expression – RMK
Avez-vous essayé -il comme une méthode à la place? –
Ça ne marcherait pas non plus – RMK