Genel bir GET yöntemi oluşturarak kodumda yinelemeyi azaltmaya çalışıyorum. OrmLite ve SQLExpressionVisitor güncellemesini kullanıyorum ... Amaç bir lambda geçmek. Yardım edeceğimi umduğum birkaç yazı gördüm ama şu ana kadar, hayır git ... Sorun şu ki, evrendeki ölçütleri değerlendirmeye çalışıyorum, ama çözüm beni terk ediyor. .. Bu kapsamdan başvurulan ben ... değişken 'x' 'TW.Api.Models.CostCenter' türündeki olsun hata öncedenGenel Sorgu Yöntemi
Teşekkür ... 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();
}
}
olduğunu '', ancak tanımlanmamış
Burada çalışan, ancak genel olmayan bir kod örneği ....
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();
}
}
Bu yukarıda başvurulan modeli ... Bu, burada nihai kodudur okuma herkes için
[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; }
}
...
public IQueryable<T> Get<T>(Expression<Func<T, bool>> criteria)
{
using (IDbConnection db = dbConnectionFactory.OpenDbConnection())
{
return db.Select(criteria).AsQueryable();
}
}
bir 'İfade ihtiyaç etmiyor musun> criteria' yerine jenerik yönteminde bir' Yüklem criteria' ait? –
Jehof
Teşekkürler Jehof, bu beni doğru yola koydu ... – Lenny