SubSonic 3.0.0.3 我们如何使用查询工具的连接?

发布于 2024-07-29 17:17:34 字数 216 浏览 7 评论 0原文

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

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

根据智能感知,接下来预计的是 SubSonic.Schema.IColumn 类型的参数。 如何提供正确的参数?

I am trying to use the query tool, but I can't figure out how to specify the correct paremeter for the join. This is as far as I get:

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

according to intellisense, parameters of type SubSonic.Schema.IColumn are expected next. How do I supply the correct parameters?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

懒猫 2024-08-05 17:17:34

您将根据连接中包含的表提供列。 例如,如果您要在 TransId 上加入 Table Trans 和 Table UserTrans,则您的语句将类似于以下内容:

SubSonic.SqlQuery query = DB.Select()
    .From(Trans.Schema)
    .LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);

根据 SubSonic 简单查询工具文档,当涉及到左外连接时,您有三个选择:

带泛型的左外连接 带模式的

    SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From<Customer>()
        .LeftOuterJoin<Order>();

左外连接

    SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From(Customer.Schema)
        .LeftOuterJoin(Order.CustomerIDColumn, Customer.CustomerIDColumn);

带魔术字符串的左外连接

   SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From("Customers")
        .LeftOuterJoin("Orders");

看来您更喜欢“左外连接与架构。” 但请注意,上面的每个选项都会返回 SubSonic SqlQuery 引用。 我不确定您是否可以如您所愿,使用 LeftOuterJoin 语法返回 Tran 列表。 您可能希望进一步查阅这方面的文档。

更新:

根据您的评论,我认为我们可以让您更接近您想要的。 .LeftOuterJoin 不包括 TableSchema.TableColumn 类型的参数,您可以通过附加 .ExecuteTypedList<> 来生成通用列表。 到选择。

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

You would provide the columns based on the tables included in the join. For example, if you are joining Table Trans and Table UserTrans on TransId, your statement would be something along the lines of the following:

SubSonic.SqlQuery query = DB.Select()
    .From(Trans.Schema)
    .LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);

According to the SubSonic Simple Query Tool Docs, you have three options when it comes to Left Outer Joins:

Left Outer Join With Generics

    SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From<Customer>()
        .LeftOuterJoin<Order>();

Left Outer Join With Schema

    SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From(Customer.Schema)
        .LeftOuterJoin(Order.CustomerIDColumn, Customer.CustomerIDColumn);

Left Outer Join With Magic Strings

   SubSonic.SqlQuery query = DB.Select(Aggregate.GroupBy("CompanyName"))
        .From("Customers")
        .LeftOuterJoin("Orders");

It appears you are favoring "Left Outer Join With Schema." Note, however, that each of the options above return a SubSonic SqlQuery reference. I'm not sure you can do as you hope, return a List of Tran, with the LeftOuterJoin syntax. You may wish to further consult the docs on this.

UPDATE:

Per your comment, I think we can get you closer to what you want. The .LeftOuterJoin excepts arguements of type TableSchema.TableColumn and you can result a generic list by appending .ExecuteTypedList<> to the select.

List<Tran> result = DB.Select()
    .From<Trans>()
    // parameters are of type TableSchema.TableColumn
    .LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);
    .ExecuteTypedList<Tran>();
赤濁 2024-08-05 17:17:34

jcomet,您的配置没有错误。 Ben 错了:他的代码只适用于 2.x,不适用于 3.0.x,这是我第一手资料,因为我遇到了同样的问题。 已进行重大更改,导致上述代码不再起作用。 为了让您在问题上更进一步,数据库中的每个表现在都有两个类; 例如:“客户”和“客户表”。 您会发现,如果您能弄清楚如何使用 DataProvider 实例化 CustomersTable 对象,您就可以引用列,并且它以 IColumn 格式而不是字符串格式返回它们。 祝你好运,本,在尝试回答问题之前更新你的 SubSonic。

jcomet, Your configuration is not incorrect. Ben is wrong: his code only works for 2.x and not 3.0.x, which i know first hand because I am having the same problem. Significant changes have been made which cause the above code not to work anymore. To get you one more step ahead in your problem, each table in your database now has two classes; ex: "Customers" and "CustomersTable". You will find that if you can figure out how to instantiate the CustomersTable object with a DataProvider, you can reference columns and it returns them in IColumn format and not string format. Good Luck, and Ben, update your SubSonic before you go trying to answer questions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文