Problème avec EntityReference interrogation
-
22-09-2019 - |
Question
Quand j'exécute le code:
public List<T> GetCustomerTxList(int customerId)
{
var matchingPocos = new List<T>();
using (linq.AOMSEntities dataRepos = new linq.AOMSEntities())
{
IEnumerable txlist = from t in dataRepos.TransactionRecord
where t.CustomerReference.Value.Id == customerId
select t;
foreach (EntityObject entity in txlist)
{
matchingPocos.Add(entity.ConvertToPoco<T>());
}
}
return matchingPocos;
}
Je reçois l'exception suivante: Data.Repository.Integration.Test.LinqRepositoryTest.GetCustomerTxList: System.NotSupportedException: L'élément de type spécifié « CustomerReference » est pas prise en charge LINQ aux entités. Seuls les initialiseurs, les membres de l'entité, et les propriétés de navigation de l'entité sont pris en charge.
CustomerReference est une EntityReference sur l'entité TransactionRecord faisant référence à une entité client.
Pourquoi ne puis-je interroger ne pas utiliser une référence d'entité?
Quelle est l'approche recommandée pour effectuer une telle requête?
Je vais heureux de vous fournir plus d'informations / code si ça aide.
La solution
Vous devriez pouvoir accéder directement au client dans votre requête comme ceci:
from t in dataRepos.TransactionRecord
where t.Customer.Id == customerId
select t;
Sous les couvertures EF utilisera le CustomerReference pour vous dans ce cas.