Der Versuch, Wiederholung in meinem Code zu reduzieren, indem eine generische Methode GET machen. Ich benutze OrmLite und seine SQLExpressionVisitor Aktualisierung ... Das Ziel ist es, ein Lambda zu übergeben. Ich habe ein paar andere Beiträge gesehen, von denen ich gehofft habe, dass sie helfen, aber bis jetzt, nein ... Es ist klar, das Problem ist, wie ich versuche, die Kriterien in der ev.Where Aussage zu bewerten, aber die Lösung entgeht mir. ..Allgemeinabfragemethode
Vielen Dank im Voraus ... -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();
}
}
Dies ist der Fehler, den ich bekommen ... Variable 'x' vom Typ 'TW.Api.Models.CostCenter' von Umfang verwiesen '', aber es ist nicht definiert
Hier ist ein Beispiel für Code, der funktioniert, ist aber nicht generisch ....
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();
}
}
Dies ist das Modell, das ich oben verwiesen ...
[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; }
}
für all dies zu lesen, hier ist der endgültige Code ...
public IQueryable<T> Get<T>(Expression<Func<T, bool>> criteria)
{
using (IDbConnection db = dbConnectionFactory.OpenDbConnection())
{
return db.Select(criteria).AsQueryable();
}
}
Nimm dir nicht eine 'Expression benötigen> criteria' anstelle eines' Prädikats criteria' in Ihrem generischen Methode? –
Jehof
Danke Jehof, das hat mich auf den richtigen Weg gebracht ... – Lenny