Подскажите, пожалуйста, есть ли какой-то метод, который можно использовать для реализации копирования записи на стороне сервера, в случаях, когда нужно скопировать полностью все значения записи, а потом изменить только парочку полей?
Ну и пример для лучшего понимания.
Нравится
Описание методов класса 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);
Зверев Александр,
Имела ввиду, первый пример без приведения.