Subsonic 亚音速3.0.0.3我们如何使用查询工具的连接?

Subsonic 亚音速3.0.0.3我们如何使用查询工具的连接?,subsonic,subsonic3,Subsonic,Subsonic3,我正在尝试使用查询工具,但我不知道如何为联接指定正确的参数。就我所知: List<Tran> = new Select().From("Trans").LeftOuterJoin( List=new Select().From(“Trans”).LeftOuterJoin( 根据intellisense,接下来需要类型为亚音速.Schema.IColumn的参数。我如何提供正确的参数?您将根据联接中包含的表提供列。例如,如果您在TransId上联接Table Trans和Tabl

我正在尝试使用查询工具,但我不知道如何为联接指定正确的参数。就我所知:

List<Tran> = new Select().From("Trans").LeftOuterJoin(
List=new Select().From(“Trans”).LeftOuterJoin(

根据intellisense,接下来需要类型为亚音速.Schema.IColumn的参数。我如何提供正确的参数?

您将根据联接中包含的表提供列。例如,如果您在TransId上联接Table Trans和Table UserTrans,则您的语句将沿着l以下其中一项:

SubSonic.SqlQuery query = DB.Select()
    .From(Trans.Schema)
    .LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);
根据,对于左侧外部联接,有三个选项:

带泛型的左外联接

    SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From<Customer>()
        .LeftOuterJoin<Order>();
左外接与魔弦

   SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From("Customers")
        .LeftOuterJoin("Orders");
您似乎更喜欢“使用模式的左外部联接”。但是,请注意,上面的每个选项都返回一个亚音速SqlQuery引用。我不确定您是否可以按照希望的方式,返回一个带有左外部联接语法的Tran列表。您可能希望进一步查阅文档

更新:

根据您的评论,我认为我们可以让您更接近您想要的。LeftOuterJoin排除了TableSchema.TableColumn类型的参数,您可以通过将.ExecuteTypedList附加到select来生成一个通用列表

List<Tran> result = DB.Select()
    .From<Trans>()
    // parameters are of type TableSchema.TableColumn
    .LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);
    .ExecuteTypedList<Tran>();
List result=DB.Select()
.From()
//参数的类型为TableSchema.TableColumn
.LeftOuterJoin(Trans.TransIDColumn,UserTrans.TransIDColumn);
.ExecuteTypedList();

您将根据联接中包含的表提供列。例如,如果您在TransId上联接Table Trans和Table UserTrans,则您的语句将如下所示:

SubSonic.SqlQuery query = DB.Select()
    .From(Trans.Schema)
    .LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);
根据,对于左侧外部联接,有三个选项:

带泛型的左外联接

    SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From<Customer>()
        .LeftOuterJoin<Order>();
左外接与魔弦

   SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From("Customers")
        .LeftOuterJoin("Orders");
您似乎更喜欢“使用模式的左外部联接”。但是,请注意,上面的每个选项都返回一个亚音速SqlQuery引用。我不确定您是否可以按照希望的方式,返回一个带有左外部联接语法的Tran列表。您可能希望进一步查阅文档

更新:

根据您的评论,我认为我们可以让您更接近您想要的。LeftOuterJoin排除了TableSchema.TableColumn类型的参数,您可以通过将.ExecuteTypedList附加到select来生成一个通用列表

List<Tran> result = DB.Select()
    .From<Trans>()
    // parameters are of type TableSchema.TableColumn
    .LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);
    .ExecuteTypedList<Tran>();
List result=DB.Select()
.From()
//参数的类型为TableSchema.TableColumn
.LeftOuterJoin(Trans.TransIDColumn,UserTrans.TransIDColumn);
.ExecuteTypedList();

jcomet,您的配置没有错误。Ben错了:他的代码只适用于2.x,而不是3.0.x,这是我第一手知道的,因为我遇到了相同的问题。已经进行了重大更改,导致上述代码不再工作。为了让您在问题上再前进一步,数据库中的每个表现在都有两个classes;例如:“Customers”和“CustomersTable”。您会发现,如果您能找出如何使用数据提供程序实例化CustomerTable对象,您可以引用列,它以IColumn格式而不是字符串格式返回。祝您好运,Ben,在您尝试回答问题之前,请更新您的亚音速。

jCome,您的配置没有错误。Ben错了:嗨s代码只适用于2.x,而不适用于3.0.x,这是我的第一手资料,因为我遇到了相同的问题。已经进行了重大更改,导致上述代码不再工作。为了让您在问题中领先一步,数据库中的每个表现在都有两个类:例如:“Customers”和“CustomersTable”。你会发现,如果你能想出如何用数据提供程序实例化CustomerTable对象,你可以引用列,它以IColumn格式而不是字符串格式返回。祝你好运,Ben,在你尝试回答问题之前更新你的亚音速。

谢谢你的反馈。我想我被以下事实难住了我的tables对象在3.0.0.3中没有架构属性,我也找不到IColumn类型的列引用。我发现在版本3中唯一有效的方法是使用泛型的方法。该引用文档似乎只完全适用于版本2。感谢您为我指明了正确的方向。@jcomet-请查看我的更新内联w感谢我的回答。祝你好运。再次感谢Ben,你帮了我很大的忙。不过,我认为你的示例对2.*是正确的,但对3.*不是正确的。我的LeftOuterJoin参数类型是SubSonic.Schema.IColumn。也许我的配置不正确。谢谢你的反馈。我想我被我的tables对象没有Schema p这个事实难倒了3.0.0.3中的属性,也找不到IColumn类型的列引用。我发现在版本3中唯一有效的方法是使用泛型的方法。参考文档似乎只适用于版本2。感谢您为我指明了正确的方向。@jcomet-请在我的答案中查看我的更新。祝您好运。再次感谢Ben,你帮了我很大的忙。不过,我认为你的例子对2.*是正确的,但对3.*不是正确的。我的LeftOuterJoin参数类型是亚音速的.Schema.IColumn。也许我的配置不正确。