Добрый день!
Подскажите пожалуйста, как получить доступ к полям обьекта из кода с# если нам известен 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
Григорий, скорее всего, так вытянутся все колонки объекта, что может быть излишним.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать