All docs
V20.1
20.2 (EAP/Beta)
20.1
19.2
The page you are viewing does not exist in version 19.2. This link will take you to the root page.
19.1
The page you are viewing does not exist in version 19.1. This link will take you to the root page.
18.2
The page you are viewing does not exist in version 18.2. This link will take you to the root page.
18.1
The page you are viewing does not exist in version 18.1. This link will take you to the root page.
17.2
The page you are viewing does not exist in version 17.2. This link will take you to the root page.
.NET Framework 4.5.2+
.NET Framework 4.5.2+
.NET Standard 2.0+

Session.GetObjectsFromQueryAsync<T>(List<XPMemberInfo>, String, CancellationToken) Method

Asynchronously executes a SQL query and returns its result set as a collection of non-persistent objects.

Namespace: DevExpress.Xpo

Assembly: DevExpress.Xpo.v20.1.dll

Declaration

public Task<ICollection<T>> GetObjectsFromQueryAsync<T>(
    List<XPMemberInfo> members,
    string sql,
    CancellationToken cancellationToken = default(CancellationToken)
)
Public Function GetObjectsFromQueryAsync(Of T)(
    members As List(Of XPMemberInfo),
    sql As String,
    cancellationToken As CancellationToken = Nothing
) As Task(Of ICollection(Of T))

Parameters

Name Type Description
members List<XPMemberInfo>

Specifies object members mapped to columns in the result set. The order of list elements should correspond to the order of result set columns.

sql String

Specifies an SQL statement.

Optional Parameters

Name Type Default Description
cancellationToken CancellationToken

null

A CancellationToken object that delivers a cancellation notice to the running operation.

Type Parameters

Name Description
T

The type of objects returned by the method. A class that implements this type sould be decorated with NonPersistentAttribute.

Returns

Type Description
Task<ICollection<T>>

A Task<TResult> that returns a collection of non-persistent classInfo objects instantiated with data obtained via the specified SQL query.

Remarks

Use QueryParameterCollection to pass strongly-typed parameters. See examples here: Always Encrypted (SQL Server only).

string sql = "select (FirstName + ' ' + LastName) as Name, City, Country from Employees where City = @p0";
LoadDataMemberOrderItem[] members = new[] {
    new LoadDataMemberOrderItem(0, nameof(EmployeeModel.Name)),
    new LoadDataMemberOrderItem(1, nameof(EmployeeModel.City)),
    new LoadDataMemberOrderItem(2, nameof(EmployeeModel.Country))
};
QueryParameterCollection parameters = new QueryParameterCollection() {
    new ParameterValue() { DBTypeName = "nvarchar(15)", Value = "London" }
};
ICollection<EmployeeModel> queryResultData = await session.GetObjectsFromQueryAsync<EmployeeModel>(members, sql, parameters);

The connection provider automatically generates sequential parameter names (p0, p1, p2 ...). To specify custom parameter names, use the overloaded GetObjectsFromQueryAsync<T>(LoadDataMemberOrderItem[], String, String[], QueryParameterCollection, CancellationToken) method.

This method does the following:

  • Executes the specified SQL query and obtains the query result.
  • Creates objects of the specified type and populates their properties with the resulting set's data. The members parameter specifies the mapping between columns in the resulting set and object properties. Note that the GetObjectsFromQuery<T> method's generic type parameter should specify a non-persistent class decorated with a NonPersistentAttribute.
  • Populates a collection with these objects.
NOTE

The GetObjectsFromQueryAsync<T> method throws an exception if the members list includes any of the following object members:

  • A property that is not defined within the T type.
  • A struct type member.
  • A reference to a class with a struct type member.
  • A collection used in object relations.

To learn more about executing SQL statements in XPO, refer to Direct SQL Queries.

NOTE

The GetObjectsFromQueryAsync method sends statements directly, so the correct statement syntax and parameter names format depends on a particular database server.

See Also