Добрый день, необходимо написать веб сервис на c# и столкнулся с проблемой.
В таблице есть колонка UsrdDislocationId которая ссылается на другую таблицу. у меня есть айди по котрому надо найти запись. на данный момент я написал такой запрос.
![]()
но при этом я получаю ошибку
![]()
если програмно сделать запрос вида
![]()
то я получаю такой ответ
![]()
то есть колонка вроде как есть.
в чем может быть проблема?
спасибо!
Нравится
1. При работе с ESQ/Entity (в отличие от Select/Insert и т.п.), в фильтрах названия колонок типа справочник указываются без окончания "Id".
2. FetchFromDB, помимо того, что возвращает true/false в зависимости от того, найдена запись в БД или нет, еще и вытягивает все колонки сущности, что является избыточным для простой проверки наличия записи в таблице.
Лучше тогда уж использовать что-то в этом роде:
var select = (Select) new Select(UserConnection)
.Column(Func.Count(Column.Asterisk()))
.From("UsrAdressInCase")
.Where("UsrdDislocationId").IsEqual(Column.Parameter(usrLookup1));
bool exists = select.ExecuteScalar<int>() > 0;P.S.:
var exists = contact.FetchFromDB("MobilePhone", phone); - здесь тоже затягивается куча избыточной информации.
Добрый день,
Не подскажите, пожалуйста, что именно вы передаете в параметре usrlookup1? Можете также поделиться частью кода там, где мы берем его значение?
С уважением,
Дарий
Добрый вечер.
usrLookup1 это Guid.
вот полный код
var contactSchema = UserConnection.EntitySchemaManager.FindInstanceByName("Contact");
var contact = contactSchema.CreateEntity(UserConnection);
var exists = contact.FetchFromDB("MobilePhone", phone);
if (!exists)
{
return "1";
}
var usrLookup1 = (Guid)contact.GetColumnValue("UsrLookup1Id");
if (usrLookup1 == Guid.Empty)
{
return "2";
}
var usrAddressSchema = UserConnection.EntitySchemaManager.FindInstanceByName("UsrAdressInCase");
//return string.Join(",", usrAddressSchema.Columns.Select(c => c.ColumnValueName));
var usrAdressInContact = usrAddressSchema.CreateEntity(UserConnection);
exists = usrAdressInContact.FetchFromDB("UsrdDislocationId", usrLookup1);
if (!exists)
{
return "3";
}если расскомментировать строку string.Join.... тогда получаю тот результат что выше.
я так же проверял какие колонки находятся в самой БД с помощью SQL запросов и там тоже есть UsrdDislocationId.
1. При работе с ESQ/Entity (в отличие от Select/Insert и т.п.), в фильтрах названия колонок типа справочник указываются без окончания "Id".
2. FetchFromDB, помимо того, что возвращает true/false в зависимости от того, найдена запись в БД или нет, еще и вытягивает все колонки сущности, что является избыточным для простой проверки наличия записи в таблице.
Лучше тогда уж использовать что-то в этом роде:
var select = (Select) new Select(UserConnection)
.Column(Func.Count(Column.Asterisk()))
.From("UsrAdressInCase")
.Where("UsrdDislocationId").IsEqual(Column.Parameter(usrLookup1));
bool exists = select.ExecuteScalar<int>() > 0;P.S.:
var exists = contact.FetchFromDB("MobilePhone", phone); - здесь тоже затягивается куча избыточной информации.