Проблема запроса с EntityReference
Когда я выполняю код:
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 ответ
Вы должны иметь возможность получить доступ к клиенту непосредственно в вашем запросе, например так:
from t in dataRepos.TransactionRecord
where t.Customer.Id == customerId
select t;
В этом случае EF будет использовать для вас CustomerReference.