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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top