In addition to the EntityQuery which supports the entire .NET LINQ syntax stack, DevForce provides several other query types that do not support LINQ syntax.
These are the EntityKeyQuery, PassthruEsqlQuery and StoredProcQuery types for queries using EntityKeys, Entity SQL and stored procedures, respectively.
Like the EntityQuery, these types all implement DevForce’s IEntityQuery interface.
Unlike the EntityQuery<T>, these query types are not composable, meaning that additional clauses cannot be tacked onto them to further restrict or project the query results into another form. In addition, the PassthruESQLQuery and the StoredProcQuery types do not provide in-memory querying capabilities.
What these queries do provide that the EntityQuery<T> does not is that they may offer, depending on the use case, better integration with existing database constructs, special functionality or improved performance. However, in most cases the EntityQuery<T> is usually a better choice, because of its greater flexibility.
C# | PassthruEsqlQuery query = new PassthruEsqlQuery(typeof(Employee), "SELECT VALUE e FROM Employees AS e Where e.EmployeeID < 10"); IEnumerable results = _em1.ExecuteQuery(query); |
VB | Dim query As New PassthruEsqlQuery(GetType(Employee), _ "SELECT VALUE e FROM Employees AS e Where e.EmployeeID < 10") Dim results As IEnumerable = _em1.ExecuteQuery(query) |
C# | QueryParameter param01 = new QueryParameter("EmployeeID",1); QueryParameter param02 = new QueryParameter("Year",1996); StoredProcQuery query = new StoredProcQuery(typeof(Order)); query.Parameters.Add(param01); query.Parameters.Add(param02); // Note that a FunctionImport must be defined in the Entity Model query.ProcedureName = "OrdersGetForEmployeeAndYear"; _em1.ExecuteQuery(query); |
VB | Dim param01 As New QueryParameter("EmployeeID", 1) Dim param02 As New QueryParameter("Year", 1996) Dim query As New StoredProcQuery(GetType(Order)) query.Parameters.Add(param01) query.Parameters.Add(param02) ' Note that a FunctionImport must be defined in the Entity Model query.ProcedureName = "OrdersGetForEmployeeAndYear" _em1.ExecuteQuery(query) |