ILoadable.IncludeAllAsync(int index, bool cascade = false, CancellationToken cancellationToken = default) Method
.NET Standard 2.x
Asynchronously loads all the embedded properties (where the ModelEmbedded attribute or the SqlEmbedded attribute is applied) in TModel
for a specified row.
If the ModelEmbedded attribute is applied in the property, the property will use the SQL query (defined in the detail model class specified by the ModelType
property of the ModelEmbedded attribute) to retrieve data from database. The cascade
parameter can be used to decide whether to retrieve data for the embedded properties in the detail model or the granddetail mode.
Namespace: SnapObjects.Data
Assembly: SnapObjects.Data.dll
Syntax
Task<ILoadable<TModel>> IncludeAllAsync(int index, bool cascade = false, CancellationToken cancellationToken = default);
Parameters
index
System.Int32
The zero-based index for the row in the result set.
cascade
System.Boolean
(Optional) Only when the ModelEmbedded attribute is applied in the property, the cascade
parameter can be used to decide whether to retrieve data for embedded properties in the detail model or granddetail model. See master-detail-granddetail for more info.
The default value is false
.
cancellationToken
CancellationToken
A cancellation token that can be used by other objects or threads to receive notice of cancellation.
Returns
Task<ILoadable<TModel>>
Returns a task that represents the asynchronous operation.
Examples
The following code example demonstrates how to load all of the courses asynchronously for the English department and the details about the Poetry course.
using Appeon.ApiDoc.Models.School;
using System;
namespace Appeon.ApiDoc.ILoadableExamples
{
public class IncludeAllAsyncExample
{
private SchoolContext _context;
public IncludeAllAsyncExample(SchoolContext dataContext)
{
// Sets the data context.
_context = dataContext;
}
public async void Example2()
{
var mapper = _context.SqlModelMapper;
// Asynchronous loads all courses for the English department
// (DepartmentID = 2).
var loadable = await mapper.LoadAsync<CourseInfo>(2);
// Gets the index of the English department.
int poetryIndex = loadable.ToList().FindIndex(o => o.Title == "Poetry");
// Asynchronous loads details of the Poetry course only.
var courses = (await loadable.IncludeAllAsync(poetryIndex, cascade: true))
.ToList();
Console.WriteLine("Courses: {0}",
courses[poetryIndex].Title);
// Students of the Poetry course.
Console.WriteLine();
Console.WriteLine("Student IDs:");
foreach (CourseStudentInfo student in courses[poetryIndex].Students)
{
Console.WriteLine(student.StudentID);
}
// Instructors of the Poetry course.
Console.WriteLine();
Console.WriteLine("Instructor ID(s):");
foreach (
CourseInstructorInfo instructor in courses[poetryIndex].Instructors)
{
Console.WriteLine(instructor.PersonID);
}
/* The code produces the following output:
Courses: Poetry
Student IDs:
2
3
Instructor ID(s):
4
*/
}
}
}
Example Refer To
Model Classes: CourseInfo CourseStudentInfo CourseInstructorInfo
Applies to
.NET Standard
2.x