[英]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.