Вопрос

Дублирующиеся данные в объекте

Добрый день.

 

при разработке веб сервиса возникает следующая ошибка

The server encountered an error processing the request. The exception message is 'Дублирующиеся данные в объекте UsrAdressInCase'. See server logs for more details. The exception stack trace is:
 
at Terrasoft.Core.Entities.Entity.Load(Select select, IDictionary`2 columnMap) at Terrasoft.Core.Entities.Entity.InternalFetchFromDB(IEnumerable`1 columnsToFetch, IDictionary`2 conditions, Boolean useDisplayValues, Boolean performValuesCleanup) at Terrasoft.Core.Entities.Entity.FetchFromDB(EntitySchemaColumn conditionColumn, Object conditionValue, Boolean useDisplayValues) at Terrasoft.Configuration.UsrCustomConfigurationServiceNamespace.UsrCustomConfigurationService.checkglobal(String phone) at SyncInvokecheckglobal(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Terrasoft.Web.Common.ServiceModel.ThreadContextInitializer.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

что это значит в контексте платформы креатио?

я использую следующий код

var usrAddressSchema = UserConnection.EntitySchemaManager.FindInstanceByName("UsrAdressInCase");
var usrAdressInContact = usrAddressSchema.CreateEntity(UserConnection);
exists = usrAdressInContact.FetchFromDB("UsrdDislocation", usrLookup1);

usrLookup1 - Guid ключ.

UsrdDislocation - внешний обьект. Идея найти объект в UsrAdressInCase по внешнему ключу. Я пробовал выполнить SQL запрос, но он не вернул никаких записей по этому ключу в таблице UsrAdressInCase.

Нравится

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

Добрый день.

Метод FetchFromDB выполняет выборку только одной записи, и если записей по фильтру будет несколько, то будет такая ошибка.

Т.е. в вашем случае в таблице UsrAdressInCase есть более одной записи где UsrdDislocationId = usrLookup1.

Добрый день,

 

Есть несколько предположений:

 

1) Сообщение об ошибке идет напрямую от метода checkglobal и какой-то проверки в нём.

2) Есть настроенные правила поиска дублей по объекту UsrAdressInCase и при создании Entity система возвращает сообщение, что по какому-то правилу в системе идентифицирован дубль.

3) Есть какая-то дополнительная логика, которая паралелльно с Вашим действием CreateEntity тригерится и что-то выполняет (Entity event listener или бизнес логика на самом объекте).

Добрый день.

Метод FetchFromDB выполняет выборку только одной записи, и если записей по фильтру будет несколько, то будет такая ошибка.

Т.е. в вашем случае в таблице UsrAdressInCase есть более одной записи где UsrdDislocationId = usrLookup1.

Спасибо, потом попробовал другим запросом и выяснилось, что несколько записей было.

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