6
一般的なGETメソッドを作成して、自分のコードの繰り返しを減らそうとしています。 OrmLiteとSQLExpressionVisitorの更新を使用しています...目標はラムダを渡すことです。私はいくつかの他の投稿を見てきましたが、今のところは助けてくれると思っています...問題はEv.Whereステートメントで評価される方法が問題ではありますが、解決策は私を逃げ出しています。スコープから参照..タイプの一般的なクエリメソッド
事前のおかげで... -Lenny
public IQueryable<T> Get<T>(Predicate<T> criteria)
{
using (IDbConnection db = dbConnectionFactory.OpenDbConnection())
{
SqlExpressionVisitor<T> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<T>();
ev.Where(x => criteria.Invoke(x))
return db.Select(ev).AsQueryable();
}
}
これは私が取得エラーです... 変数 'X' 'TW.Api.Models.CostCenter' ''は定義されていませんが、定義されていません
以下は、動作するコードですが、一般的ではありません....
public IQueryable<CostCenter> Get(Identity user)
{
using (IDbConnection db = dbConnectionFactory.OpenDbConnection())
{
SqlExpressionVisitor<CostCenter> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<CostCenter>();
ev.Where(x => x.OrgId == user.OrgId);
ev.Where(x => x.VisibilityStockpointId == user.StockpointId);``
return db.Select(ev).AsQueryable();
}
}
これは、私が上記の参照モデル...これを読んで、すべてのための
[Alias("CostCenterDetail")]
public class CostCenter
{
public Guid Id { get; set; }
public Guid StockpointId { get; set; }
public virtual Guid? VisibilityStockpointId { get; set; }
public string Description { get; set; }
public string Number { get; set; }
public string OrgId { get; set; }
}
あり、ここでの最終的なコードは...あなたが代わりにExpression<Func<T, bool>>
を使用する必要が
public IQueryable<T> Get<T>(Expression<Func<T, bool>> criteria)
{
using (IDbConnection db = dbConnectionFactory.OpenDbConnection())
{
return db.Select(criteria).AsQueryable();
}
}
は、あなたが '式を必要とするドント<機能> criteria'代わりに、あなたの一般的な方法で'述語 criteria'の? –
Jehof
ありがとうございましたJehof、それは正しい軌道に乗っています... – Lenny