簡體   English   中英

如何將自定義sql查詢映射到酷存儲中的CSObject?

[英]How can I map custom sql queries to CSObjects in cool storage?

我想在使用Vici.CoolStorage時使用復雜的SQL查詢來獲取對象列表。 它本身提供了一種特定的查詢語法,但它不足以滿足我的需求。 在網站上有一個如何將自定義查詢結果映射到自定義對象的示例,但我想要的是獲取CSObject后代的列表(CSList),與我使用CSObject.List()方法相同。

這可能是因為CSObjects映射到表。 (作為抽象類和使用反射等......)

如果您希望能夠讀取相關對象,則可以定義延遲加載這些記錄的屬性。 例如:

public class MyCustomQueryResult
{
    public int SomeId;
    public string SomeStringField;
    public int SomeScalar;

    public CSList<MappedObject> MappedObjects
    {
        get { return MappedObject.List("SomeId = @SomeId", "@SomeId", SomeId); }
    }
}

然后你可以像這樣使用它:

string sqlQuery = "SELECT a.SomeId, b.SomeString, COUNT(*) AS SomeScalar"
                + "FROM tblA a"
                + "INNER JOIN tblB b ON a.SoneId = b.SomeId"
                + "GROUP BY a.SomeId, b.SomeString"
                + "WHERE b.SomeField = @SomeParameter";

MyCustomQueryResult[] entries = CSDatabase.RunQuery<MyCustomQueryResult>(sqlQuery, new {SomeParameter:"123456"});

foreach (MyCustomQueryResult entry in entries)
{
   foreach (MappedObject mappedObject in entry.MappedObjects)
   {
       DoSomethingUseful(mappedObject);
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM