Подскажите, пожалуйста, есть ли какой-то метод, который можно использовать для реализации копирования записи на стороне сервера, в случаях, когда нужно скопировать полностью все значения записи, а потом изменить только парочку полей?
Ну и пример для лучшего понимания.
Нравится
Описание методов класса ENTITY привелены тут
Обратите внимание на:
virtual object Clone() - Создает клон текущего экземпляра Entity.
Примеры использования:
var newEntity = entity.Clone();
var newEntity = entity.Clone() as Terrasoft.Configuration.Document;
Описание методов класса ENTITY привелены тут
Обратите внимание на:
virtual object Clone() - Создает клон текущего экземпляра Entity.
Примеры использования:
var newEntity = entity.Clone();
var newEntity = entity.Clone() as Terrasoft.Configuration.Document;
Григорий Чех,
Спасибо, об этом методе знаю, думала, что есть ещё какие-то варианты.
Приведенный пример Entity newEntity = entity.Clone() не рабочий.
Чтобы потом работать с newEntity нужно применить явное приведение, примерно так:
Entity newEntity = (Entity)entity.Clone()
В коде встречаются и по такому варианту, похожему на предложенный Григорием:
var newGoodsEntity = goodsEntity.Clone() as Terrasoft.Core.Entities.Entity;
newGoodsEntity.SetDefColumnValues();
newGoodsEntity.SetColumnValue("Id", Guid.NewGuid());
newGoodsEntity.SetColumnValue("ChangeRequestId", newChangeRequestId);
newGoodsEntity.Save();или вот:
row = dataSource.Rows[0].Clone() as Terrasoft.Core.Entities.Entity;
Guid currentUserContactId = Page.UserConnection.CurrentUser.ContactId;
EntityPrimaryColumnValue = Guid.NewGuid();
Page.DataSource.CacheItemName = Page.SchemaName + "_" + EntityPrimaryColumnValue.ToString();
row.SetColumnValue(primaryColumnName, EntityPrimaryColumnValue);
row.SetColumnValue("CreatedOn", DateTime.Now);
row.SetColumnValue("CreatedById", currentUserContactId);
row.SetColumnValue("ModifiedOn", DateTime.Now);
row.SetColumnValue("ModifiedById", currentUserContactId);
var columnNames = new List<string>();
foreach (var column in row.Schema.Columns) {
if (column.HasDefValue && (column.IsLookupType || column.IsMultiLookupType) && !columnNames.Contains(column.Name)) {
columnNames.Add(column.Name);
}
}
row.LoadLookupDisplayValues(columnNames);
dataSource.Insert(row);
Зверев Александр,
Имела ввиду, первый пример без приведения.