Проблемы с ESQ

Следующий код работать отказывается.
Валится на этапе создания фильтра.
В ShowBDMessage ЕСТЬ колонка User (как показывается имя в BPM) или UserId (как показывает MS SQL). Как ни называй, результат один:
Exception Message: Элемент коллекции с именем UserId не найден
или
Exception Message: Элемент коллекции с именем User не найден

Кто нибудь может объяснить почему?

EntitySchemaManager esqManager = UserConnection.EntitySchemaManager;

var esqShowBDMessage = new EntitySchemaQuery(esqManager, "ShowBDMessage");
esqShowBDMessage.AddColumn("ShowDate");
var currentUserContactId = UserConnection.CurrentUser.ContactId;
var userIdFilter = esqShowBDMessage.CreateFilterWithParameters(FilterComparisonType.Equal, "User", currentUserContactId);
esqShowBDMessage.Filters.Add(userIdFilter);

Нравится

6 комментариев

Вопрос снят, решил через Select.

Select select = new Select(UserConnection)
        .Column(Column.Asterisk())
        .From("ShowBDMessage")
        .Where("UserId").In(Column.Const(strUserId)) as Select;
 
 
EntityCollection messages = new EntityCollection(UserConnection, "ShowBDMessage");
messages.Load(select.ExecuteReader(UserConnection.EnsureDBConnection()));

но почему такое с ESQ происходит все-таки загадка....

Можно попробовать так:

        var query = new EntitySchemaQuery(manager, "Account");
/////////
	var currentAccountId = query.AddColumn(query.RootSchema.PrimaryColumn.Name);
/////////
	var accountPhone = query.AddColumn("Phone").Name;	
	var queryResult = query.GetEntityCollection(UserConnection);

Возможно, нужно было добавить в ESQ и колонку, по которой будет фильтр:

query.AddColumn("User.Id");

Колонку добавлял, не помогало, ошибка была та же.
Кстати, вообще все колонки добавлял :smile:

Последний вариант у меня, это попробовать User.Id...

esqShowBDMessage.CreateFilterWithParameters(FilterComparisonType.Equal, "User.Id", currentUserContactId);

Попробую на досуге, сейчас нет времени, да и закрыл вопрос, как писал выше ,через select.

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