Проблема запроса с EntityReference - PullRequest
       318

Проблема запроса с EntityReference

2 голосов
/ 26 февраля 2010

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

        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.

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

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

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

1 Ответ

5 голосов
/ 26 февраля 2010

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

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

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

...