Проблема с запросом с помощью EntityReference
-
22-09-2019 - |
Вопрос
Когда я выполняю код:
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.