+ Add post
How to create or update a record using Entity Schema Query on server side?
Like
Hi Nagaraju! Here are some samples:
//Update via entity: var entity = UserConnection.EntitySchemaManager.GetInstanceByName("MyObjectName"); var assignersEntity = entity.CreateEntity(UserConnection); if (assignersEntity.FetchFromDB(recordId))//recordId - id of the record you want to udpate { assignersEntity.SetColumnValue("MyColumnNameId", newContactId);//for lookup columns use "Id" at the end of a column assignersEntity.Save(); } //Insert via entity: var entity = UserConnection.EntitySchemaManager.GetInstanceByName("MyObjectName"); var assignersEntity = entity.CreateEntity(UserConnection); assignersEntity.SetDefColumnValues(); assignersEntity.SetColumnValue("MyColumnNameLookupDataTypeId", projectAccountId); assignersEntity.SetColumnValue("MyColumnNameStringDataType", "text"); assignersEntity.Save(); //Select data using enity schema query: var folderESQ = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "MyObjectName"); var exchangeColumn = folderESQ.AddColumn("ColumnToTake").Name; var contactInFolderFilter = folderESQ.CreateFilterWithParameters(FilterComparisonType.Equal, "[ContactInFolder:Folder].Contact", contactId); folderESQ.Filters.Add(contactInFolderFilter); var groups = new List<ItemId>(); var folders = folderESQ.GetEntityCollection(UserConnection); foreach (var folder in folders) { var folderId = folder.GetTypedColumnValue<string>(exchangeColumn); //process data } //Delete record: EntitySchema adminUnitSchema = SystemUserConnection.EntitySchemaManager.GetInstanceByName("MyObjectName"); Entity adminUnitEntity = adminUnitSchema.CreateEntity(SystemUserConnection); if (adminUnitEntity.FetchFromDB(userId)) { adminUnitEntity.Delete(); } //Another sample: EntitySchema entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact"); Entity entity = entitySchema.CreateEntity(UserConnection); if (!entity.FetchFromDB("ColumnName", extId, false)) { entity.SetDefColumnValues(); entity.SetColumnValue("ColumnName", extId); } entity.SetColumnValue("AnotherColumn", "text"); entity.Save(false);
For additional info - you use Visual studio intellisense on your local env or you can use this online reference.
Dmytro Smishchenko,
This was helpful. Is there a way we can update records using a where clause instead of record id? Example : Update all records where Age > 18 using ESQ in server side. I tried using filters but looks like EntitySchema class does not have filters. Any help would be much appreciated. Thanks