Ошибка при инициализации SalesOrderDetail
Доброго времени суток!
суть проблемы:
1) есть код, который создает SalesOrder & SalesOrderDetail:
CrmServiceContext svcContext = new CrmServiceContext(base.Service);//берем текущий контекст
SalesOrder newSO = initSalesOrder(AccId,
"SalesOrder #" + SOnumber.ToString() + "-" + groupedByBillToAccountTransactions[AccId].Count.ToString());
//эта функция заполняет поля SalesOrder. тут ошибок нет=) фактическое заполнение полей, из другой entity по всем правилам
Guid newSalesOrderId = Guid.Empty;
newSO.Id = Guid.NewGuid();
newSalesOrderId = newSO.Id;
svcContext.AddObject(newSO);
//добавляем наш SalesOrder в контекст
//далее добавляем SalesOrderDetail в наш ордер:
SalesOrderDetail newSalesOrderDetail = new SalesOrderDetail();
newSalesOrderDetail = initSalesOrderDetail(TransactionsCache[TransactionId], newSalesOrderId);//эта функция заполняет поля SalesOrderDetail по всем правилам
svcContext.AddRelatedObject
(
newSO,
new Relationship("order_details"),
newSalesOrderDetail
);//добавляем связь между SalesOrderDetail и SalesOrder
svcContext.SaveChanges();//сохраняем изменения в CRM
2)проблема в следующем:
- если SalesOrderDetail заполненна правильно, то все работает отлично. создает подряд все что нужно
- если в SalesOrderDetail заполнить поля ProductID & ProductDescription одновременно (да, такого делать нельзя - должна быть ошибка), то вылетает следующее:
Message from webpage
---------------------------
{
"error": {
"code": "-2147220910", "message": {
"lang": "en-US", "value": "VerifyCommitted - Transaction has not been committed"
}
}
}
собественно, после этого вылета, все перестает работать
3) вопрос в следующем:
как можно отловить эту ошибку (try ... catch не помог: все строки обвалакивал им - все-равно вылет) так, чтобы работа не завершалась, а скажем выдавалось сообщение "была ошибка"?
p.s. код предтавлен выборочный. сама прога многобольше
p.p.s. вылет происходит скорее всего при:
а) заполнении полей SalesOrderDetail
б) добавлении SalesOrderDetail в контекст
както вериться в это=)
p.p.p.s проверять условия правильного заполнения руками - плохо.
стараюсь вылавливать ошибки ЦРМ из него самого - поэтому и добавляю неправильные entity, заставляя его критовать. как это делать?
p.p.p.p.s. тут многобукаф. извиняюсь - первый пост=)
|