EntityCollection<TEntity>.Attach 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义对象上下文中两个附加对象之间的关系。
重载
| 名称 | 说明 |
|---|---|
| Attach(IEnumerable<TEntity>) |
定义对象与对象上下文中相关对象的集合之间的关系。 |
| Attach(TEntity) |
定义对象上下文中两个附加对象之间的关系。 |
Attach(IEnumerable<TEntity>)
定义对象与对象上下文中相关对象的集合之间的关系。
public:
void Attach(System::Collections::Generic::IEnumerable<TEntity> ^ entities);
public void Attach(System.Collections.Generic.IEnumerable<TEntity> entities);
override this.Attach : seq<'Entity (requires 'Entity : null and 'Entity :> System.Data.Objects.DataClasses.IEntityWithRelationships)> -> unit
override this.Attach : seq<'Entity (requires 'Entity : null)> -> unit
Public Sub Attach (entities As IEnumerable(Of TEntity))
参数
- entities
- IEnumerable<TEntity>
与源对象相关的对象上下文中的对象的集合。
例外
entities 集合为 null.
集合中的 entities 源对象或对象处于 null 或未处于 Unchanged 或 Modified 状态。
-或-
不能基于 EDM 元数据定义关系。 当概念架构中的关联不支持这两种类型之间的关系时,可能会发生这种情况。
注解
当源对象和相关对象的集合都存在于对象上下文中时,该方法 Attach 用于定义相关对象与相关对象的集合之间的关系。 若要附加已定义关系的对象或对象图,请对该方法Attach调用ObjectContext该方法。 若要创建与源对象相关的新对象,请在 <
如果集合已填充或部分填充,该方法会将 Attach 现有实体与给定实体合并。 假定给定实体不是相关实体的完整集。
传入的所有实体都必须处于 Unchanged 或 Modified 处于状态。 Deleted仅当状态管理器已跟踪关系实例时,才允许处于状态的对象。
适用于
Attach(TEntity)
定义对象上下文中两个附加对象之间的关系。
public:
void Attach(TEntity entity);
public void Attach(TEntity entity);
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)
参数
- entity
- TEntity
要附加的对象。
例外
当为 entitynull.
entity当无法与源对象相关时。 当概念架构中的关联不支持这两种类型之间的关系时,可能会发生这种情况。
-或-
示例
此示例基于 Adventure Works 销售模型。 若要运行此示例中的代码,必须将 AdventureWorks 销售模型添加到项目中,并将项目配置为使用 Entity Framework。 为此,请完成 如何:手动配置 Entity Framework Project 和 如何:手动定义模型和映射文件。
本示例将分离SalesOrderDetail对象的集合和分离SalesOrderHeader的对象附加到对象上下文,然后定义对象与每个SalesOrderHeader对象之间的关系SalesOrderDetail。
private static void AttachRelatedObjects(
ObjectContext currentContext,
SalesOrderHeader detachedOrder,
List<SalesOrderDetail> detachedItems)
{
// Attach the root detachedOrder object to the supplied context.
currentContext.Attach(detachedOrder);
// Attach each detachedItem to the context, and define each relationship
// by attaching the attached SalesOrderDetail object to the EntityCollection on
// the SalesOrderDetail navigation property of the now attached detachedOrder.
foreach (SalesOrderDetail item in detachedItems)
{
currentContext.Attach(item);
detachedOrder.SalesOrderDetails.Attach(item);
}
}
注解
当两个对象已存在于对象上下文中时,该方法 Attach 用于定义两个对象之间的关系。 若要附加已定义关系的对象或对象图,请对该方法Attach调用ObjectContext该方法。 若要创建与源对象相关的新对象,请在 <
EntityCollection<TEntity>如果已加载对象,该方法Attach会将对象与其中的现有对象合并在一EntityCollection<TEntity>起。
不假定附加对象是相关实体对象的完整集。
与此对象 EntityCollection<TEntity> 关联的对象以及附加到它的所有对象必须处于 Unchanged 或 Modified 状态。
Deleted仅当已跟踪关系实例时ObjectStateManager,才能附加处于状态的对象。