我使用的是最新版本的SubSonic 3和ActiveRecord。我正在尝试在LINQ中进行左连接。它在SubSonic中的某处发生错误时失败。LINQ Left Join在SubSonic.Core中导致错误
我有一个车辆对象和一个VehicleImage对象车辆可以有多个图像,但它不是必需的。所以左连接是合适的。
这是我
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
};
这是错误我得到
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
这是堆栈跟踪您的任何见解
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()
感谢。
看起来像Fluent查询可以做我现在需要的东西,但我有另一个问题。我没有一个好方法可以将多个表中的数据导入流畅查询列表的结果中。我有许多表连接到列名与其他表相同的地方。有了LINQ,我正在混淆这些列。流利的查询似乎没有支持。所以执行类型列表将不起作用,因为列名不能匹配我的类中的名称。我在Fluent查询中丢失了什么? – 2010-02-08 17:54:02
其实,从头开始。 Fluent Query没有对FindColumn中的列名进行限定,因此最终会在查询中返回大量相同的列。这有各种问题。猜猜我要创建一个视图。 – 2010-02-08 18:00:03
我没有尝试还没有但该文档说(简单的选择与类型列): INT记录=新NorthwindDB.Select( 新的String [] { ProductTable.ProductIDColumn, Product.ProductNameColumn}) 。从 ().GetRecordCount(); –
Aytek
2010-02-09 17:05:26