EntityReference<TEntity> 类

定义

表示重数为零或一的关联的相关端。

generic <typename TEntity>
 where TEntity : class, IEntityWithRelationshipspublic ref class EntityReference sealed : System::Data::Objects::DataClasses::EntityReference
generic <typename TEntity>
 where TEntity : classpublic ref class EntityReference sealed : System::Data::Objects::DataClasses::EntityReference
[System.Runtime.Serialization.DataContract]
[System.Serializable]
public sealed class EntityReference<TEntity> : System.Data.Objects.DataClasses.EntityReference where TEntity : class, IEntityWithRelationships
[System.Runtime.Serialization.DataContract]
[System.Serializable]
public sealed class EntityReference<TEntity> : System.Data.Objects.DataClasses.EntityReference where TEntity : class
[<System.Runtime.Serialization.DataContract>]
[<System.Serializable>]
type EntityReference<'Entity (requires 'Entity : null and 'Entity :> IEntityWithRelationships)> = class
    inherit EntityReference
[<System.Runtime.Serialization.DataContract>]
[<System.Serializable>]
type EntityReference<'Entity (requires 'Entity : null)> = class
    inherit EntityReference
Public NotInheritable Class EntityReference(Of TEntity)
Inherits EntityReference

类型参数

TEntity

引用的实体类型。

继承
EntityReference<TEntity>
属性

示例

此示例演示如何使用 EntityReference<TEntity> 对象更改 SalesOrderHeader 对象和表示订单发货地址的相关 Address 对象之间的关系。


// Define the order and new address IDs.
int orderId = 43669;
int addressId = 26;

using (AdventureWorksEntities context
    = new AdventureWorksEntities())
{
    // Get the billing address to change to.
    Address address =
        context.Addresses.Single(c => c.AddressID == addressId);

    // Get the order being changed.
    SalesOrderHeader order =
        context.SalesOrderHeaders.Single(o => o.SalesOrderID == orderId);

    // You do not have to call the Load method to load the addresses for the order,
    // because  lazy loading is set to true
    // by the constructor of the AdventureWorksEntities object.
    // With  lazy loading set to true the related objects are loaded when
    // you access the navigation property. In this case Address.

    // Write the current billing street address.
    Console.WriteLine("Current street: "
        + order.Address.AddressLine1);

    // Change the billing address.
    if (!order.Address.Equals(address))
    {
        // Use Address navigation property to change the association.
        order.Address = address;

        // Write the changed billing street address.
        Console.WriteLine("Changed street: "
            + order.Address.AddressLine1);
    }

    // If the address change succeeds, save the changes.
    context.SaveChanges();

    // Write the current billing street address.
    Console.WriteLine("Current street: "
        + order.Address.AddressLine1);
}

注解

当相关端的重数为零或一时,导航属性返回一个 EntityReference<TEntity> 对象。 有关详细信息,请参阅 NavigationProperty 元素 (CSDL)

EntityReference<TEntity> 对象可能在关系的另一端具有相应的 EntityCollection<TEntity>(一对多关系)或 EntityReference<TEntity>(一对一关系)。 当 EntityReference<TEntity>EntityCollection<TEntity> 模型位于同一关系的相反端时,该关系的完整性维持在对象级别。

此类不能被继承。

构造函数

EntityReference<TEntity>()

创建 EntityReference<TEntity> 的新实例。

属性

EntityKey

返回相关对象的键。

(继承自 EntityReference)
IsLoaded

获取一个值,该值指示是否已加载所有相关对象。

(继承自 RelatedEnd)
RelationshipName

获取此相关端所参与的关系的名称。

(继承自 RelatedEnd)
RelationshipSet

获取对相关端元数据的引用。

(继承自 RelatedEnd)
SourceRoleName

获取关系的源端的角色名称。

(继承自 RelatedEnd)
TargetRoleName

获取关系目标端处的角色名称。

(继承自 RelatedEnd)
Value

获取或设置此 EntityReference<TEntity> 返回的相关对象。

方法

Attach(TEntity)

在对象上下文中创建两个对象之间的多对一或一对一关系。

Attach<TEntity>(IEnumerable<TEntity>, Boolean)

定义两个附加对象之间的关系。

(继承自 RelatedEnd)
CreateSourceQuery()

创建一个返回相关对象的等效对象查询。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetEnumerator()

返回一个 IEnumerator,它循环访问相关对象的集合。

(继承自 RelatedEnd)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
Load()

在派生类中重写时,使用默认合并选项将一个或多个相关对象加载到相关端中。

(继承自 RelatedEnd)
Load(MergeOption)

使用指定的合并选项为此 EntityReference<TEntity> 加载相关对象。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
Merge<TEntity>(IEnumerable<TEntity>, MergeOption, Boolean)

将相关实体合并到本地 EntityCollection<TEntity> 中。

(继承自 RelatedEnd)
OnDeserialized(StreamingContext)

在内部使用,用于反序列化实体对象与 RelationshipManager 实例。

(继承自 RelatedEnd)
OnRefDeserialized(StreamingContext)

此方法在内部使用,用于序列化相关实体对象。

OnSerializing(StreamingContext)

此方法在内部使用,用于序列化相关实体对象。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
ValidateEntityForAttach<TEntity>(TEntity, Int32, Boolean)

确定对象可以附加到本地集合还是引用。

(继承自 RelatedEnd)
ValidateLoad<TEntity>(MergeOption, String)

确保相关对象可以成功加载到本地集合或引用中。

(继承自 RelatedEnd)
ValidateOwnerForAttach()

确保相关端所属的对象支持附加操作。

(继承自 RelatedEnd)

事件

AssociationChanged

对相关端进行更改时发生。

(继承自 RelatedEnd)

显式接口实现

IRelatedEnd.Add(IEntityWithRelationships)

将对象添加到相关端。

(继承自 RelatedEnd)
IRelatedEnd.Add(Object)

将对象添加到相关端。

(继承自 RelatedEnd)
IRelatedEnd.Attach(IEntityWithRelationships)

将对象附加到相关端。

(继承自 RelatedEnd)
IRelatedEnd.Attach(Object)

将对象附加到相关端。

(继承自 RelatedEnd)
IRelatedEnd.CreateSourceQuery()

返回一个 IEnumerable,它表示属于相关端的对象。

(继承自 RelatedEnd)
IRelatedEnd.Remove(IEntityWithRelationships)

从相关端的集合中移除一个对象。

(继承自 RelatedEnd)
IRelatedEnd.Remove(Object)

如果某个对象是相关端的一部分,则从该相关端中移除该对象。

(继承自 RelatedEnd)

适用于