Usar una clave alternativa para crear un registro

Ahora puede utilizar claves alternativas para crear instancias de clases Entity y EntityReference. Este artículo analiza los patrones de uso y las excepciones posibles que se pueden lanzar cuando se usan claves alternativas. Para comprender cómo definir las claves alternativas para una tabla, consulte Definir claves alternativas para una tabla.

Nota

También puede actualizar registros usando las claves alternativas. Más información: Actualización con clave alternativa

Uso de claves alternativas para crear una tabla

Puede crear un Entity con un Id. primario o un solo KeyAttribute, o una colección de columnas de claves en una sola llamada utilizando estos constructores.

public Entity (string logicalName, Guid id) {…}    
public Entity (string logicalName, string keyName, object keyValue) {…}  
public Entity (string logicalName, KeyAttributeCollection keyAttributes) {…}  
  

Un Entity válido usado para operaciones de actualización incluye un nombre lógico de la tabla y uno de los siguientes:

  • Un valor para el Id. (valor de GUID de clave principal)
  • Un par de valores clave especificados
  • Un KeyAttributeCollection con un conjunto válido de columnas que coincide con una clave definida para la tabla.

Uso de claves alternativas para crear una EntityReference

También puede crear un EntityReference con un Id. primario o un solo KeyAttribute, o una colección de columnas de claves en una sola llamada utilizando estos constructores.

public EntityReference(string logicalName, Guid id) {…}    
public EntityReference(string logicalName, string keyName, object keyValue) {…}    
public EntityReference(string logicalName, KeyAttributeCollection keyAttributeCollection) {…}  
  

Un EntityReference válido incluye un nombre lógico de la tabla y:

  • Un valor para el Id. (valor de GUID de clave principal)
  • Un par de valores clave especificados
  • Una colección KeyAttributeCollection con un conjunto válido de columnas que coincide con una clave definida para la tabla.

Entrada alternativa a mensajes

Al pasar las tablas a CreateRequest y UpdateRequest, los valores que se proporcionan para las columnas de búsqueda mediante una EntityReference pueden utilizar ahora EntityReference con claves alternativas definidas en el KeyAttributes para especificar el registro relacionado. Estos se resolverán y reemplazarán con las referencias de tabla basadas en Id. principal antes de que se procesen los mensajes.

Excepciones al utilizar claves alternativas

Es necesario conocer las siguientes condiciones y excepciones posibles para utilizar claves alternativas:

  • El Id. principal se usa si se proporciona. Si no se proporciona, examinará el KeyAttributeCollection. Si no se proporciona el KeyAttributeCollection, lanzará un error.

  • Si el KeyAttributeCollection proporcionado incluye una columna que es la clave principal de la tabla y el valor es válido, éste rellena la propiedad de Id. del Entity o EntityReference con el valor proporcionado.

  • Si se proporcionan las columnas de clave, el sistema trata de hacer coincidir el conjunto columnas suministrado con las claves definidas para la Entity. Si no encuentra una coincidencia, lanzará un error. Si encuentra una coincidencia, validará los valores proporcionados para esas columnas. Si es válido, recuperará el Id. del registro que coincidió con valores clave proporcionados, y rellena el valor de Id. de Entity o EntityReference con este valor.

  • Si especifica una columna establecida que no está definido como única clave, se lanzará un error que indica que el uso de columnas de clave únicas es obligatorio.

Consultar también

Definir claves alternativas para una tabla
Uso del seguimiento de cambios para sincronizar los datos con sistemas externos
Use Upsert para insertar o actualizar un registro

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).