.NET Framework Class Library EntityKey Class Provides a durable reference to an object that is an instance of an entity type.

Inheritance Hierarchy
Namespace:
System.Data
Assembly:
System.Data.Entity (in System.Data.Entity.dll)

Syntax
<SerializableAttribute> _
<DataContractAttribute(IsReference := True)> _
Public NotInheritable Class EntityKey _
Implements IEquatable(Of EntityKey)
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public sealed class EntityKey : IEquatable<EntityKey>
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public ref class EntityKey sealed : IEquatable<EntityKey^>
[<Sealed>]
[<SerializableAttribute>]
[<DataContractAttribute(IsReference = true)>]
type EntityKey =
class
interface IEquatable<EntityKey>
end
The EntityKey type exposes the following members.

Constructors

Properties

Methods

Operators

Remarks

Examples
These examples are based on the Adventure Works Sales Model. The examples show you how to create and use an EntityKey.
Using context As New AdventureWorksEntities()
Dim entity As Object = Nothing
Dim entityKeyValues As IEnumerable(Of KeyValuePair(Of String, Object)) = _
New KeyValuePair(Of String, Object)() {New KeyValuePair(Of String, Object)("SalesOrderID", 43680)}
' Create the key for a specific SalesOrderHeader object.
Dim key As New EntityKey("AdventureWorksEntities.SalesOrderHeaders", entityKeyValues)
' Get the object from the context or the persisted store by its key.
If context.TryGetObjectByKey(key, entity) Then
Console.WriteLine("The requested " & entity.GetType().FullName & " object was found")
Else
Console.WriteLine("An object with this key could not be found.")
End If
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
Object entity = null;
IEnumerable<KeyValuePair<string, object>> entityKeyValues =
new KeyValuePair<string, object>[] {
new KeyValuePair<string, object>("SalesOrderID", 43680) };
// Create the key for a specific SalesOrderHeader object.
EntityKey key = new EntityKey("AdventureWorksEntities.SalesOrderHeaders", entityKeyValues);
// Get the object from the context or the persisted store by its key.
if (context.TryGetObjectByKey(key, out entity))
{
Console.WriteLine("The requested " + entity.GetType().FullName +
" object was found");
}
else
{
Console.WriteLine("An object with this key " +
"could not be found.");
}
}
Using context As New AdventureWorksEntities()
Try
' Create the key that represents the order.
Dim orderKey As New EntityKey("AdventureWorksEntities.SalesOrderHeaders", "SalesOrderID", orderId)
' Create the stand-in SalesOrderHeader object
' based on the specified SalesOrderID.
Dim order As New SalesOrderHeader()
order.EntityKey = orderKey
' Assign the ID to the SalesOrderID property to matche the key.
order.SalesOrderID = CInt(orderKey.EntityKeyValues(0).Value)
' Attach the stand-in SalesOrderHeader object.
context.SalesOrderHeaders.Attach(order)
' Create a new SalesOrderDetail object.
' You can use the static CreateObjectName method (the Entity Framework
' adds this method to the generated entity types) instead of the new operator:
' SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,
' Guid.NewGuid(), DateTime.Today));
Dim detail = New SalesOrderDetail With
{
.SalesOrderID = 0,
.SalesOrderDetailID = 0,
.OrderQty = 2,
.ProductID = 750,
.SpecialOfferID = 1,
.UnitPrice = CDec(2171.2942),
.UnitPriceDiscount = 0,
.LineTotal = 0,
.rowguid = Guid.NewGuid(),
.ModifiedDate = DateTime.Now
}
order.SalesOrderDetails.Add(detail)
context.SaveChanges()
Catch generatedExceptionName As InvalidOperationException
Console.WriteLine("Ensure that the key value matches the value of the object's ID property.")
Catch generatedExceptionName As UpdateException
Console.WriteLine("An error has occured. Ensure that an object with the '{0}' key value exists.", orderId)
End Try
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
// Create the key that represents the order.
EntityKey orderKey =
new EntityKey("AdventureWorksEntities.SalesOrderHeaders",
"SalesOrderID", orderId);
// Create the stand-in SalesOrderHeader object
// based on the specified SalesOrderID.
SalesOrderHeader order = new SalesOrderHeader();
order.EntityKey = orderKey;
// Assign the ID to the SalesOrderID property to matche the key.
order.SalesOrderID = (int)orderKey.EntityKeyValues[0].Value;
// Attach the stand-in SalesOrderHeader object.
context.SalesOrderHeaders.Attach(order);
// Create a new SalesOrderDetail object.
// You can use the static CreateObjectName method (the Entity Framework
// adds this method to the generated entity types) instead of the new operator:
// SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,
// Guid.NewGuid(), DateTime.Today));
SalesOrderDetail detail = new SalesOrderDetail
{
SalesOrderID = orderId,
SalesOrderDetailID = 0,
OrderQty = 2,
ProductID = 750,
SpecialOfferID = 1,
UnitPrice = (decimal)2171.2942,
UnitPriceDiscount = 0,
LineTotal = 0,
rowguid = Guid.NewGuid(),
ModifiedDate = DateTime.Now
};
order.SalesOrderDetails.Add(detail);
context.SaveChanges();
}
catch (InvalidOperationException)
{
Console.WriteLine("Ensure that the key value matches the value of the object's ID property.");
}
catch (UpdateException)
{
Console.WriteLine("An error has occured. Ensure that an object with the '{0}' key value exists.",
orderId);
}
}

Version Information
.NET FrameworkSupported in: 4, 3.5 SP1 .NET Framework Client ProfileSupported in: 4

Platforms
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role not supported), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Thread Safety
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also
|
Biblioteca de clases de .NET Framework EntityKey (Clase) Proporciona una referencia duradera a un objeto que es una instancia de un tipo de entidad.

Jerarquía de herencia
Espacio de nombres:
System.Data
Ensamblado:
System.Data.Entity (en System.Data.Entity.dll)

Sintaxis
<SerializableAttribute> _
<DataContractAttribute(IsReference := True)> _
Public NotInheritable Class EntityKey _
Implements IEquatable(Of EntityKey)
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public sealed class EntityKey : IEquatable<EntityKey>
[SerializableAttribute]
[DataContractAttribute(IsReference = true)]
public ref class EntityKey sealed : IEquatable<EntityKey^>
[<Sealed>]
[<SerializableAttribute>]
[<DataContractAttribute(IsReference = true)>]
type EntityKey =
class
interface IEquatable<EntityKey>
end
El tipo EntityKey expone los siguientes miembros.

Constructores

Operadores

Comentarios

Ejemplos
Estos ejemplos están basados en el Adventure Works Sales Model. En el ejemplo se muestra cómo crear y usar un objeto EntityKey.
Using context As New AdventureWorksEntities()
Dim entity As Object = Nothing
Dim entityKeyValues As IEnumerable(Of KeyValuePair(Of String, Object)) = _
New KeyValuePair(Of String, Object)() {New KeyValuePair(Of String, Object)("SalesOrderID", 43680)}
' Create the key for a specific SalesOrderHeader object.
Dim key As New EntityKey("AdventureWorksEntities.SalesOrderHeaders", entityKeyValues)
' Get the object from the context or the persisted store by its key.
If context.TryGetObjectByKey(key, entity) Then
Console.WriteLine("The requested " & entity.GetType().FullName & " object was found")
Else
Console.WriteLine("An object with this key could not be found.")
End If
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
Object entity = null;
IEnumerable<KeyValuePair<string, object>> entityKeyValues =
new KeyValuePair<string, object>[] {
new KeyValuePair<string, object>("SalesOrderID", 43680) };
// Create the key for a specific SalesOrderHeader object.
EntityKey key = new EntityKey("AdventureWorksEntities.SalesOrderHeaders", entityKeyValues);
// Get the object from the context or the persisted store by its key.
if (context.TryGetObjectByKey(key, out entity))
{
Console.WriteLine("The requested " + entity.GetType().FullName +
" object was found");
}
else
{
Console.WriteLine("An object with this key " +
"could not be found.");
}
}
Using context As New AdventureWorksEntities()
Try
' Create the key that represents the order.
Dim orderKey As New EntityKey("AdventureWorksEntities.SalesOrderHeaders", "SalesOrderID", orderId)
' Create the stand-in SalesOrderHeader object
' based on the specified SalesOrderID.
Dim order As New SalesOrderHeader()
order.EntityKey = orderKey
' Assign the ID to the SalesOrderID property to matche the key.
order.SalesOrderID = CInt(orderKey.EntityKeyValues(0).Value)
' Attach the stand-in SalesOrderHeader object.
context.SalesOrderHeaders.Attach(order)
' Create a new SalesOrderDetail object.
' You can use the static CreateObjectName method (the Entity Framework
' adds this method to the generated entity types) instead of the new operator:
' SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,
' Guid.NewGuid(), DateTime.Today));
Dim detail = New SalesOrderDetail With
{
.SalesOrderID = 0,
.SalesOrderDetailID = 0,
.OrderQty = 2,
.ProductID = 750,
.SpecialOfferID = 1,
.UnitPrice = CDec(2171.2942),
.UnitPriceDiscount = 0,
.LineTotal = 0,
.rowguid = Guid.NewGuid(),
.ModifiedDate = DateTime.Now
}
order.SalesOrderDetails.Add(detail)
context.SaveChanges()
Catch generatedExceptionName As InvalidOperationException
Console.WriteLine("Ensure that the key value matches the value of the object's ID property.")
Catch generatedExceptionName As UpdateException
Console.WriteLine("An error has occured. Ensure that an object with the '{0}' key value exists.", orderId)
End Try
End Using
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
try
{
// Create the key that represents the order.
EntityKey orderKey =
new EntityKey("AdventureWorksEntities.SalesOrderHeaders",
"SalesOrderID", orderId);
// Create the stand-in SalesOrderHeader object
// based on the specified SalesOrderID.
SalesOrderHeader order = new SalesOrderHeader();
order.EntityKey = orderKey;
// Assign the ID to the SalesOrderID property to matche the key.
order.SalesOrderID = (int)orderKey.EntityKeyValues[0].Value;
// Attach the stand-in SalesOrderHeader object.
context.SalesOrderHeaders.Attach(order);
// Create a new SalesOrderDetail object.
// You can use the static CreateObjectName method (the Entity Framework
// adds this method to the generated entity types) instead of the new operator:
// SalesOrderDetail.CreateSalesOrderDetail(1, 0, 2, 750, 1, (decimal)2171.2942, 0, 0,
// Guid.NewGuid(), DateTime.Today));
SalesOrderDetail detail = new SalesOrderDetail
{
SalesOrderID = orderId,
SalesOrderDetailID = 0,
OrderQty = 2,
ProductID = 750,
SpecialOfferID = 1,
UnitPrice = (decimal)2171.2942,
UnitPriceDiscount = 0,
LineTotal = 0,
rowguid = Guid.NewGuid(),
ModifiedDate = DateTime.Now
};
order.SalesOrderDetails.Add(detail);
context.SaveChanges();
}
catch (InvalidOperationException)
{
Console.WriteLine("Ensure that the key value matches the value of the object's ID property.");
}
catch (UpdateException)
{
Console.WriteLine("An error has occured. Ensure that an object with the '{0}' key value exists.",
orderId);
}
}

Información de versión
.NET FrameworkCompatible con: 4, 3.5 SP1 .NET Framework Client ProfileCompatible con: 4

Plataformas
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Seguridad para subprocesos
Todos los miembros static ( Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también
|