Question
How to create or update a record using Entity Schema Query on server side?
09:23 Jan 23, 2020
How to create or update a record using Entity Schema Query on server side?
Like
2 comments
21:27 Jan 27, 2020
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.
09:00 Jun 30, 2021
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
Show all comments