Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
Este artículo incluye ejemplos que usan estilos de programación con enlace tardío y con enlace temprano. Más información:
- Programación de vinculación temprana y de vinculación tardía con el SDK para .NET
- Generar clases de vinculación temprana para SDK para .NET
Creación básica
Los siguientes ejemplos muestran cómo crear una fila de tabla utilizando el estilo de programación de enlace tardío y enlace temprano.
Cada uno de los ejemplos usa una variable svc que representa una instancia de una clase que implementa los métodos en la interfaz IOrganizationService. Para obtener más información sobre las clases que admiten esta interfaz, consulte Interfaz IOrganizationService.
Nota
Cada tabla tiene una columna de clave primaria con un identificador único, que puede especificarse al crear una fila. En la mayoría de los casos debe permitir que el sistema lo establezca automáticamente porque los valores generados por el sistema se optimizan para el máximo rendimiento.
Dataverse almacena los datos de clave principal en telemetría para ayudar a mantener el servicio. Si especifica valores de clave principal personalizados, no use información confidencial en esos valores.
Con tablas elásticas, puede crear registros con valores de clave primaria duplicados y distintos valores de partitionid. Sin embargo, este patrón no es compatible con Power Apps basadas en modelo o de lienzo.
Obtenga información sobre cómo configurar el valor de la clave principal con tablas elásticas
El siguiente ejemplo muestra cómo se usa la clase Entity generada para crear una cuenta utilizando el método IOrganizationService.Create.
//Use Entity class with entity logical name
var account = new Entity("account");
// set attribute values
// string primary name
account["name"] = "Contoso";
// Boolean (Two option)
account["creditonhold"] = false;
// DateTime
account["lastonholdtime"] = new DateTime(2017, 1, 1);
// Double
account["address1_latitude"] = 47.642311;
account["address1_longitude"] = -122.136841;
// Int
account["numberofemployees"] = 500;
// Money
account["revenue"] = new Money(new decimal(5000000.00));
// Picklist (Option set)
account["accountcategorycode"] = new OptionSetValue(1); //Preferred customer
//Create the account
Guid accountid = svc.Create(account);
Usar la clase CreateRequest
En lugar de usar el método IOrganizationService.Create, puede usar ya sea la clase Entity de enlace tardío o las clases de entidad generadas de enlace anticipado con CreateRequest, estableciendo la instancia de la entidad en la propiedad CreateRequest.Target y luego utilizando el método IOrganizationService.Execute para obtener una instancia de CreateResponse. El id. de la fila de la tabla de la cuenta creada estará en el valor de la propiedad CreateResponse.id.
var request = new CreateRequest() { Target = account };
var response = (CreateResponse)svc.Execute(request);
Guid accountid = response.id;
Cuando utilizar la clase CreateRequest
Debe usar la clase CreateRequest si desea pasar parámetros opcionales. Hay dos casos donde es posible que necesite parámetros especiales.
- Cuando quiere que se apliquen reglas de detección de duplicados. Más información: Detectar datos duplicados usando SDK para .NET
- Cuando estás creando una fila que representa un componente de la solución, como WebResource, y deseas asociarla con una solución específica. En este caso, incluirías el valor de Solution.UniqueName con el parámetro
SolutionUniqueName. Más información: Usar mensajes con SDK para .NET
Usar la clase CreateMultipleRequest
Cuando necesite crear varios registros del mismo tipo, la clase CreateMultipleRequest es la forma más eficaz. Más información: mensajes de operación masiva
Crear entidades relacionadas en una operación
Para tablas estándar, cuando crea una nueva fila de tabla, también puede crear filas relacionadas en la misma operación. Esto se llama deep insert.
Los siguientes ejemplos late-bound y early-bound crearán una Account y un Contact relacionados con esa cuenta mediante la relación de uno a varios contact account_primary_contact, donde la búsqueda de account primarycontactid es la búsqueda de ReferencingAttribute.
Los ejemplos también crean tres filas Tarea usando la relación de uno a varios Account_Tasks de la cuenta, donde la búsqueda de regardingobjectid de la tarea es ReferencingAttribute.
En el estilo de enlace tardío, debe agregar explícitamente una o más entidades relacionadas (filas) a EntityCollection y luego usar la clase Relationship para especificar la relación usando el SchemaName de la relación antes de poder agregarlas a la propiedad Entity.RelatedEntities.
// Use Entity class with entity logical name
var account = new Entity("account");
// Set attribute values
// string primary name
account["name"] = "Sample Account";
// Create Primary contact
var primaryContact = new Entity("contact");
primaryContact["firstname"] = "John";
primaryContact["lastname"] = "Smith";
// Add the contact to an EntityCollection
EntityCollection primaryContactCollection = new EntityCollection();
primaryContactCollection.Entities.Add(primaryContact);
// Set the value to the relationship
account.RelatedEntities[new Relationship("account_primary_contact")] = primaryContactCollection;
// Add related tasks to create
var taskList = new List<Entity>() {
new Entity("task") { ["subject"] = "Task 1" },
new Entity("task") { ["subject"] = "Task 2" },
new Entity("task") { ["subject"] = "Task 3" }
};
// Add the tasks to an EntityCollection
EntityCollection tasks = new EntityCollection(taskList);
// Set the value to the relationship
account.RelatedEntities[new Relationship("Account_Tasks")] = tasks;
// Create the account
Guid accountid = svc.Create(account);
Asociar filas de tabla en la creación
Puede asociar cualquier fila nueva con una fila existente cuando la crea de la misma manera que lo haría al actualizarla. Debe usar un EntityReference para establecer el valor de una columna de búsqueda (atributo).
Esta asignación de búsqueda es la misma para los estilos de enlace temprano y tardío.
//Use Entity class with entity logical name
var account = new Entity("account");
// set attribute values
//string primary name
account["name"] = "Sample Account";
Guid primarycontactid = new Guid("e6fa5509-2582-e811-a95e-000d3af40ae7");
account["primarycontactid"] = new EntityReference("contact", primarycontactid);
//Create the account
Guid accountid = svc.Create(account);
Usa teclas alternativas
Si no conoce el ID de la fila de la tabla y se cumplen las siguientes condiciones:
- Ha configurado claves alternativas para la tabla
- Conoces los valores clave
Puede usar los constructores EntityReference alternativos mediante los parámetros keyName y keyValue.
account["primarycontactid"] = new EntityReference("contact", "sample_username", "john.smith123");
Nota
Las claves alternativas se usan normalmente solo para los escenarios de integración de datos
Más información:
- Definir claves alternativas para hacer referencia a filas
- Usar una clave alternativa para hacer referencia a un registro
- Trabajar con teclas alternativas
Comprobar registros duplicados
Más información: Detectar datos duplicados usando SDK para .NET
Establecer valores predeterminados a partir de la fila de la tabla principal
Cuando las personas crean nuevas filas en la aplicación, generalmente se crean en el contexto de otra fila. Por ejemplo, puede crear una nueva fila de contacto en el contexto de una cuenta. Cuando esto sucede, ciertos valores de columna de la cuenta se copian en el formulario de contacto. Esto acelera la creación de la nueva fila relacionada porque la nueva fila tendrá algunos valores predeterminados establecidos para que la persona que edita la fila que se va a crear no necesite ingresar esos valores. Pueden cambiar los valores si quieren antes de guardar.
Los valores que se copiarán cuando se cree una nueva fila de esta manera se controlan mediante configuraciones aplicadas al entorno de Microsoft Dataverse, por lo que pueden variar entre entornos.
Más información:
Como desarrollador, puede usar la clase InitializeFromRequest para generar una instancia de entidad con valores predeterminados ya establecidos.
El siguiente código creará un nuevo contacto asociado a una cuenta existente. El contacto está asociado con la cuenta especificada, y ciertos valores de atributo, como Telephone1, así como varios valores de dirección compartidos entre la cuenta y el contacto, se establecen de forma predeterminada.
//The account that the contact will be associated with:
var parentAccount = new EntityReference("account", new Guid("a976763a-ba1c-e811-a954-000d3af451d6"));
// Initialize a new contact entity with default values from the account.
var request = new InitializeFromRequest()
{
EntityMoniker = parentAccount,
TargetEntityName = "contact"
};
var response = (InitializeFromResponse)svc.Execute(request);
//Get the Entity from the response
Entity contact = response.Entity;
// Set values that are not from the account
contact["firstname"] = "Joe";
contact["lastname"] = "Smith";
// Create the contact
Guid contactid = svc.Create(contact);
Usar upsert
Otra forma de crear una fila de la tabla es usando la clase UpsertRequest. Un upsert creará una nueva fila cuando no exista una fila que tenga los identificadores únicos incluidos en la fila pasada con la solicitud.
Más información: Usar upsert
Crear documentos en particiones de almacenamiento
Si está creando una gran cantidad de filas de tabla elástica que contienen datos no relacionales, puede crear las filas en particiones de almacenamiento para acelerar el acceso a esas filas. Más información: Particionamiento y escalado horizontal
Consulte también
Recuperar una fila de tabla usando SDK para .NET
Actualizar y eliminar filas de tablas usando SDK para .NET
Asociar y anular la asociación de filas de tabla mediante la SDK para .NET