Технические вопросы
5.x

Проблемы с 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.

[csharp]
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()));
[/csharp]

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

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

[csharp]
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);

[/csharp]

Возможно, нужно было добавить в ESQ и колонку, по которой будет фильтр:
[csharp]
query.AddColumn("User.Id");
[/csharp]

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

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

[csharp]
esqShowBDMessage.CreateFilterWithParameters(FilterComparisonType.Equal, "User.Id", currentUserContactId);
[/csharp]

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

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