Вопрос

как получить доступ к полям обьекта из кода ?

Добрый день!

Подскажите пожалуйста, как получить доступ к полям обьекта из кода с# если нам известен ID обьекта?

лезть в БД и тянуть селектом или есть какая-нибудь функция типа GetObjectByID ?

Нравится

5 комментариев
Лучший ответ

Зверев Александр,

Можно слегка упростить синтаксис :)

var _caseFile = new Terrasoft.Configuration.CaseFile(UserConnection);
_caseFile.FetchFromDB(recordId); 
var typeId = _caseFile.GetColumnValue("TypeId");
var name = _caseFile.GetColumnValue("Name");

 

В 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);

 

Зверев Александр,

Можно слегка упростить синтаксис :)

var _caseFile = new Terrasoft.Configuration.CaseFile(UserConnection);
_caseFile.FetchFromDB(recordId); 
var typeId = _caseFile.GetColumnValue("TypeId");
var name = _caseFile.GetColumnValue("Name");

 

Григорий, скорее всего, так вытянутся все колонки объекта, что может быть излишним.

Зверев Александр,Спасибо огромное!!!

 

Григорий Чех,

 и вам спасибо за вариант !!! ситуации бывают разные  :))) это тоже пригодится

Показать все комментарии