Вопрос

Когда я выполняю код:

        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;
        }

Я получаю следующее исключение:Data.Repository.Integration.Test.LinqRepositoryTest.GetCustomerTxList:System.NotSupportedException:Указанный член типа CustomerReference не поддерживается в LINQ to Entities.Поддерживаются только инициализаторы, члены сущностей и свойства навигации по сущностям.

CustomerReference — это EntityReference в сущности TransactionRecord, ссылающейся на сущность Customer.

Почему я не могу выполнить запрос, используя ссылку на объект?

Каков рекомендуемый подход для выполнения такого запроса?

Я с радостью предоставлю дополнительную информацию/код, если это поможет.

Это было полезно?

Решение

У вас должна быть возможность получить доступ к Клиенту напрямую в вашем запросе следующим образом:

from t in dataRepos.TransactionRecord 
where t.Customer.Id == customerId 
select t;

В этом случае EF будет использовать для вас CustomerReference.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top