LINQ 쿼리에 문제가 있습니다.LINQ 필요한 모든 레코드를 가져 오지 않는 쿼리
이 쿼리는 리포지토리의 항목을 기반으로 새 개체의 목록을 만듭니다. 다음은 원래 쿼리입니다 :
var accounts = (from a in entityRepository.Queryable<Account>()
from l in a.ExternalLogins
select new
{
a.ID,
FullName = a.FirstName + " " + a.LastName,
Status = a.Status == AccountStatus.Closed ? Enums.Status.Inactive : Enums.Status.Active,
Login = new
{
ConnectionID = l.Connection.ID,
l.Connection.ConnectionType,
l.Identity
},
a.AdminAccess,
a.Username,
a.Email
}).ToList();
내 문제는 모든 a
가 a.ExternalLogins
을 가지고있다. 추가 문의 명세서 (from l in a.ExternalLogins
)로 인해 쿼리에서 해당 계정을 가져 오지 않았습니다. 쿼리를 수정하려고 시도 :
var accounts = (from a in entityRepository.Queryable<Account>()
select new
{
a.ID,
FullName = a.FirstName + " " + a.LastName,
Status = a.Status == AccountStatus.Closed ? Enums.Status.Inactive : Enums.Status.Active,
Login = (from l in a.ExternalLogins
select new
{
ConnectionID = l.Connection.ID,
l.Connection.ConnectionType,
l.Identity
}),
a.AdminAccess,
a.Username,
a.Email
}).ToList();
하지만 'System.Reflection.AmbiguousMatchException'예외가 발생합니다. 그 예외를 살펴본 결과, Account
과 Connection
에 모두 ID
이 있기 때문에 그 이유가 무엇인지 추측합니다.
나는 이것을 올바른 방향으로 향하고 있습니까? 이 예외를 추적합니까 아니면 내 쿼리가 올바르지 않습니까?
사소한 경우 사과드립니다. 나는 LINQ 질의에 익숙하지 않고, 나의 Google 기술은 나에게이 시점에서 실패했다!
응답 주셔서 감사합니다! 그게 완전히 의미가 있지만, 내가 해봤을 때, 예외가 발생했습니다 "NHibernate.Exceptions.GenericADOException '쿼리를 실행할 수 없습니다 [SQL : SQL을 사용할 수 없음]"내부 예외와 함께 "개체 참조가 인스턴스로 설정되지 않았습니다 개체의. " –
@GrapeJelly 위의 코드는 "일반"LINQ에서 작동하기 때문에 질문에 'nhibernate' 태그를 추가하는 것을 고려해 볼 수 있습니다. –
@Ivan Steven 추가되었습니다! 미안, 나는 그것이 구체적으로 요인을 연주하고 있었는지 몰랐다. –