최신 버전의 SubSonic 3 및 ActiveRecord를 사용하고 있습니다. LINQ에서 왼쪽 조인을하려고합니다. 그것은 SubSonic 어딘가에있는 오류로 실패합니다.LINQ Left Join이 SubSonic.Core에서 오류를 발생시킵니다.
Vehicle 객체와 VehicleImage 객체가 있습니다. Vehicle에는 여러 이미지가있을 수 있지만 반드시 필요하지는 않습니다. 따라서 왼쪽 조인이 적절합니다.
이이 스택 트레이스에게 어떤 통찰력 사전에
at SubSonic.Linq.Translation.QueryBinder.ConvertToSequence(Expression expr) at SubSonic.Linq.Translation.QueryBinder.VisitSequence(Expression source) at SubSonic.Linq.Translation.QueryBinder.BindSelectMany(Type resultType, Expression source, LambdaExpression collectionSelector, LambdaExpression resultSelector) at SubSonic.Linq.Translation.QueryBinder.VisitMethodCall(MethodCallExpression m) at SubSonic.Linq.Structure.ExpressionVisitor.Visit(Expression exp) at SubSonic.Linq.Structure.DbExpressionVisitor.Visit(Expression exp) at SubSonic.Linq.Translation.QueryBinder.Visit(Expression exp) at SubSonic.Linq.Translation.QueryBinder.Bind(QueryMapping mapping, Expression expression) at SubSonic.Linq.Structure.QueryMapping.Translate(Expression expression) at SubSonic.Linq.Structure.DbQueryProvider.Translate(Expression expression) at SubSonic.Linq.Structure.DbQueryProvider.GetExecutionPlan(Expression expression) at SubSonic.Linq.Structure.DbQueryProvider.Execute(Expression expression) at SubSonic.Linq.Structure.QueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) at SubSonic.Linq.Structure.Query`1.GetEnumerator() at System.Linq.SystemCore_EnumerableDebugView`1.get_Items()
감사하다 내가
The expression of type 'System.Linq.IQueryable`1[<>f__AnonymousType1`2[<>f__AnonymousType0`2[Project.Data.Vehicle,Project.Data.DealerLocation],System.Collections.Generic.IEnumerable`1[Project.Data.VehicleImage]]]' is not a sequence
을 받기는 오류가 나는
var vehicle = from v in Vehicle.All()
join dl in DealerLocation.All() on v.DealerLocationID equals dl.ID
join vi in VehicleImage.All() on v.ID equals vi.VehicleID into VehicleImages
from vij in VehicleImages.DefaultIfEmpty()
&& vij.IsPrimary
select new
{
v, vij.Image
};
을 것입니다.
Fluent Query가 현재 필요한 것은 할 수 있지만 다른 문제가 있습니다. 유창한 쿼리 목록의 결과에 여러 테이블의 데이터를 가져 오는 좋은 방법이 없습니다. 열 이름이 다른 테이블과 동일한 위치에 조인되는 여러 테이블이 있습니다. LINQ를 사용하여이 열의 별명을 지정했습니다. 유창한 쿼리는이를 지원하지 않습니다. 따라서 열 이름이 내 클래스의 이름과 일치 할 수 없기 때문에 유형이 지정된 목록을 실행하면 작동하지 않습니다. 나는 Fluent Query에서 뭔가를 놓치고 있습니까? –
사실, 그걸 긁어. Fluent Query는 FindColumn의 열 이름을 테이블로 한정하지 않으므로 결국 같은 열을 많이 반환하게됩니다. 그 모든 종류의 문제가 있습니다. 뷰를 만들 것입니다. –
(입력 열이 간단한 선택) 난 아직 시도하지 않았지만, 워드 프로세서는 말한다 : INT 기록 = 새로운 NorthwindDB.Select ( 새 문자열 [] { ProductTable.ProductIDColumn, Product.ProductNameColumn}) 피하여() .GetRecordCount(); –
Aytek