DataLoadOptions Класс

Определение

Предоставляет немедленную загрузку и фильтрацию связанных данных.Provides for immediate loading and filtering of related data.

public ref class DataLoadOptions sealed
public sealed class DataLoadOptions
type DataLoadOptions = class
Public NotInheritable Class DataLoadOptions
Наследование
DataLoadOptions

Примеры

При извлечении Customers из образца базы данных Northwind можно использовать DataLoadOptions , чтобы указать, что Orders также необходимо получить.When you retrieve Customers from the Northwind sample database, you can use DataLoadOptions to specify that Orders is also to be retrieved. Можно даже указать, какое подмножество Orders извлечь.You can even specify which subset of Orders to retrieve.

Комментарии

ОбщиеGeneral

При запросе объекта фактически извлекается только запрошенный объект.When you query for an object, you actually retrieve only the object you requested. Связанные объекты не извлекаться автоматически одновременно.The related objects are not automatically fetched at the same time. (Дополнительные сведения см. в разделе запросы по связям.)(For more information, see Querying Across Relationships.)

DataLoadOptions Класс предоставляет два метода для немедленной загрузки указанных связанных данных.The DataLoadOptions class provides two methods to achieve immediate loading of specified related data. LoadWith Метод позволяет немедленно загружать данные, связанные с основным целевым объектом.The LoadWith method allows for immediate loading of data related to the main target. AssociateWith Метод позволяет фильтровать связанные объекты.The AssociateWith method allows for filtering related objects.

ПравилаRules

Обратите внимание на следующие DataLoadOptions правила использования:Note the following rules regarding DataLoadOptions usage:

Обработка цикловCycle Handling

LoadWithдирективы и AssociateWith не должны создавать циклы.LoadWith and AssociateWith directives must not create cycles. Ниже представлены примеры таких диаграмм.The following represent examples of such graphs:

  • Пример 1: РекурсивныйExample 1: Self recursive

    • dlo.LoadWith<Employee>(e => e.Reports);
  • Пример 2 Обратные указателиExample 2: Back-pointers

    • dlo.LoadWith <Customer>(c => C.Orders);

    • dlo.LoadWith <Order>(o => o.Customer);

  • Пример 3 Более длинные циклыExample 3: Longer cycles

    Хотя это не должно происходить в хорошо нормализованной модели, это возможно.Although this should not occur in a well-normalized model, it is possible.

    • dlo.LoadWith <A>(a => a.Bs);

    • dlo.LoadWith <B>(b => b.Cs);

    • dlo.LoadWith <C>(c => c.As);

  • Пример 4. Рекурсивные вложенные запросыExample 4: Self recursive subQueries

    • dlo.AssociateWith<A>(a=>a.As.Where(a=>a.Id=33));
  • Пример 5. Более длинных рекурсивных вложенных запросовExample 5: Longer recursive subqueries

    • dlo.AssociateWith<A>(a=>a.Bs.Where(b=>b.Id==3));

    • dlo.AssociateWith<B>(b=>b.As.Where(a=>a.Id==3));

Ниже приведены некоторые общие правила, которые помогут понять, что происходит в этих сценариях.The following are some general rules that help you understand what occurs in these scenarios.

LoadWith Каждый вызов LoadWith проверяет, появились ли в графе циклы.LoadWith Each call to LoadWith checks whether cycles have been introduced into the graph. Если есть, как в примерах 1, 2 и 3, возникает исключение.If there are, as in Examples 1, 2, and 3, an exception is thrown.

AssociateWith Обработчик во время выполнения не применяет существующие предложения вложенных запросов к связи внутри выражения.AssociateWith The engine at run time does not apply the existing SubQuery clauses to the relationship inside the expression.

  • В примере 4 Where предложение выполняется для всех A, а не только для тех, которые подотфильтрованы по самому выражению вложенного запроса (так как это будет рекурсивно).In Example 4, the Where clause is executed against all A, not just the ones sub-filtered by the SubQuery expression itself (because that would be recursive)

  • В примере 5 первое Where предложение применяется ко Bвсем, даже если имеются вложенные запросы B.In Example 5, the first Where clause is applied to all the Bs, even though there are subqueries on B. Второе Where предложение применяется ко всем, Aдаже если имеются вложенные запросы A.The second Where clause is applied to all the As even though there are subqueries on A.

Конструкторы

DataLoadOptions()

Инициализирует новый экземпляр класса DataLoadOptions.Initializes a new instance of the DataLoadOptions class.

Методы

AssociateWith(LambdaExpression)

Фильтрует объекты, полученные для определенной связи.Filters the objects retrieved for a particular relationship.

AssociateWith<T>(Expression<Func<T,Object>>)

Фильтрует объекты, полученные для определенной связи.Filters objects retrieved for a particular relationship.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetAssociationCriteria(MemberInfo, LambdaExpression)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
IsImmediate(MemberInfo)
LoadWith(LambdaExpression)

Получает указанные данные, связанные с основным целевым объектом с помощью лямбда-выражения.Retrieves specified data related to the main target by using a lambda expression.

LoadWith<T>(Expression<Func<T,Object>>)

Указывает, какие вложенные объекты следует получить при отправке запроса для объекта типа Т.Specifies which sub-objects to retrieve when a query is submitted for an object of type T.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к