Добрый день!
Подскажите пожалуйста, как получить доступ к полям обьекта из кода с# если нам известен ID обьекта?
лезть в БД и тянуть селектом или есть какая-нибудь функция типа GetObjectByID ?
Нравится
5 комментариев
Лучший ответ
22 января 2019 18:10
Зверев Александр,
Можно слегка упростить синтаксис :)
var _caseFile = new Terrasoft.Configuration.CaseFile(UserConnection);
_caseFile.FetchFromDB(recordId);
var typeId = _caseFile.GetColumnValue("TypeId");
var name = _caseFile.GetColumnValue("Name");
22 января 2019 17:06
В 5.Х была готовая функция для этой цели. Можно было указать объект, колонку и запись, получить в ответ значение колонки. Если в 7.Х нет, можно скопировать:
public static T GetEntityTypedColumnValue<T>(UserConnection userConnection, string schemaName, string columnName, Guid id) {
var schema = userConnection.EntitySchemaManager.GetInstanceByName(schemaName);
var esq = new EntitySchemaQuery(schema);
var queryColumnName = esq.AddColumn(columnName).Name;
var filter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, schema.PrimaryColumn.Name, id);
esq.Filters.Add(filter);
var entities = esq.GetEntityCollection(userConnection);
foreach (var entity in entities) {
return entity.GetTypedColumnValue<T>(queryColumnName);
}
return default(T);
}Пример вызова в коде:
accountId = Terrasoft.Configuration.MsgServiceUtilities.GetEntityTypedColumnValue<Guid>(UserConnection, "Contact", "Account.Id", singleContactId);
22 января 2019 18:10
Зверев Александр,
Можно слегка упростить синтаксис :)
var _caseFile = new Terrasoft.Configuration.CaseFile(UserConnection);
_caseFile.FetchFromDB(recordId);
var typeId = _caseFile.GetColumnValue("TypeId");
var name = _caseFile.GetColumnValue("Name");
23 января 2019 10:30
Григорий, скорее всего, так вытянутся все колонки объекта, что может быть излишним.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать