亚音速3/ActiveRecord:在非主键字段上查找()失败(仅限VB.NET)

亚音速3/ActiveRecord:在非主键字段上查找()失败(仅限VB.NET),vb.net,subsonic,subsonic3,Vb.net,Subsonic,Subsonic3,当我在非主键字段上调用Find()时,我得到一个SqlException。我只有在VB中调用时才会遇到这种情况 详情: 亚音速3.0.0.3和ActiveRecord VisualStudio2008解决方案 C#类库项目中的亚音速和T4模板 我的VB应用程序在一个单独的项目中引用了亚音速项目 在我的VB应用程序中,我试图对一个亚音速生成的类调用Find(),如下所示: dim foo = Orders.Find(Function(myOrder as Order) myOrder.Cu

当我在非主键字段上调用Find()时,我得到一个SqlException。我只有在VB中调用时才会遇到这种情况

详情:

  • 亚音速3.0.0.3和ActiveRecord
  • VisualStudio2008解决方案
    • C#类库项目中的亚音速和T4模板
    • 我的VB应用程序在一个单独的项目中引用了亚音速项目
在我的VB应用程序中,我试图对一个亚音速生成的类调用Find(),如下所示:

dim foo = Orders.Find(Function(myOrder as Order) myOrder.CustomerID = 1)
这在ActiveRecord.cs中失败,在以下位置的(生成的)订单类中使用此方法:

public static IList<Order> Find(Expression<Func<Order, bool>> expression) {
    var repo = GetRepo();
    return repo.Find(expression).ToList();   '<---- exception here
}
我在C#中这样做也没有问题


我做错了什么?这与吗?

这是否作为github上的一个问题提出?我会对这个问题毫不在意的。我推测CustomerID和OrderID是整数。一个答案(以及我的注释)被删除。我做了更多的工作,root导致了这一点:当我对允许空值的列调用Find()时,亚音速正在生成错误的SQL。只有在我从VB.NET项目调用Find()时才会发生这种情况(亚音速+模板位于同一解决方案中的单独C#项目中)。如果我从C#项目中调用Find(),就没有问题。我在github上报道了这件事,亲爱的。。。问题在于创建的表达式树。基本上,myOrder.CustomerID=1变为。。。p=>Convert((p.CategoryID=ConvertChecked(4)),其中在C#中,相同的表达式变成。。。p=>(p.CategoryID=Convert(4)) SqlException was unhandled by user code Incorrect syntax near 'LESS_THAN_SIGN'
dim foo = Orders.Find(Function(myOrder as Order) myOrder.OrderID = 1)