Дозвуковая одиночная оговорка WHERE - PullRequest
1 голос
/ 01 октября 2010

Можно ли применить предложение WHERE к запросу SubSonic?

Например, я получаю сингл на основе идентификатора ...

db.Single<Storage>(id);

Но как я могу получитьсингл, основанный на простом предложении WHERE?

db.Single<Storage>(WHERE columnname == "value");

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Спасибо за вышеупомянутое, это была помощь, и в конце концов я упростил это до следующего ...

        db.Single<Storage>(s => s.ColumnName == "value");
1 голос
/ 01 октября 2010

это возможно:

// Will return a Storage instance with property IsNew = true, if record does not exist
// since an object created with new never can be null
var storage1 = new Storage(1); // id = 1
var storage1 = new Storage(Storag.Columns.ColumnName, "value");

// Will return 0 if record not found (subsonic3 only)
var storage3 = (from s in Storage
               where s.ColumnName == "value"
               select s).SingleOrDefault();

// Will throw an exception if record not found  (subsonic3 only)
var storage3 = (from s in Storage
               where s.ColumnName == "value"
               select s).Single();   

Поскольку db является частичным классом, вы можете расширить его.Просто создайте новый файл в том же пространстве имен (но в другой папке в вашем решении).Это относится к дозвуковой 2, но я думаю, будет похоже на дозвуковую 3.

public static partial class DB
{
    public static T Single<T>(String columName, Object columnValue) where T: RecordBase<T>, new()
    {
        return Select().From<T>()
                       .Where(columnName).IsEqualTo(columnValue)
                       .ExecuteSingle<T>();
    }
}
...