我想使用查詢工具,但我無法弄清楚如何爲連接指定正確的參數。這是據我得到:SubSonic 3.0.0.3我們如何在查詢工具中使用連接?
List<Tran> = new Select().From("Trans").LeftOuterJoin(
根據智能感知,型SubSonic.Schema.IColumn的參數下一個預期。我如何提供正確的參數?
我想使用查詢工具,但我無法弄清楚如何爲連接指定正確的參數。這是據我得到:SubSonic 3.0.0.3我們如何在查詢工具中使用連接?
List<Tran> = new Select().From("Trans").LeftOuterJoin(
根據智能感知,型SubSonic.Schema.IColumn的參數下一個預期。我如何提供正確的參數?
您將根據連接中包含的表提供列。例如,如果你是加盟表跨和TRANSID表UserTrans,你的聲明將是沿着以下線的東西:
SubSonic.SqlQuery query = DB.Select()
.From(Trans.Schema)
.LeftOuterJoin(Trans.TransIDColumn, UserTrans.TransIDColumn);
按照SubSonic Simple Query Tool Docs,你有三個選擇,當涉及到左外連接:
左外連接使用泛型
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列表。你可能希望進一步諮詢這方面的文檔。
UPDATE:
根據您的意見,我認爲我們可以讓你更接近你想要什麼。 .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>();
jcomet,您的配置不正確。本是錯誤的:他的代碼只適用於2.x而不是3.0.x,我知道第一手因爲我有同樣的問題。已經做出重大更改,導致上述代碼不再起作用。爲了讓你的問題更進一步,數據庫中的每個表現在都有兩個類;例如:「客戶」和「CustomersTable」。您會發現,如果您可以找出如何使用DataProvider實例化CustomersTable對象,則可以引用列,並以IColumn格式返回它們,而不是字符串格式。祝你好運,Ben,在你嘗試回答問題之前更新你的SubSonic。
感謝您的反饋意見。我猜想我被我的表對象在3.0.0.3中沒有Schema屬性,我也找不到IColumn類型的列引用。我發現在版本3中使用的唯一方法是使用泛型的方法。參考文檔似乎只完全適用於版本2.感謝您指引我朝着正確的方向發展。 – jcomet 2009-08-03 13:07:24