|
![]() |
#1 |
Участник
|
а зачем это делать?
Создать сущность можно 1 строкой. В чем разница context.AddObject(entity1); или service.Create(entity1); |
|
![]() |
#2 |
Участник
|
Цитата:
создать SalesOrder только в том случае, если может быть создана его SalesOrderDetail. руками проверять ВСЕ поля SalesOrderDetail есть нехорошо, поэтому есть идея делать это через систему, и если система не может создать SalesOrderDetail - отлавливать эксепшн и соответственно ничего не создавать. правда в "несоздавании" SalesOrder сильно я не продвинулся, вот и ищу различные пути=) p.s. на сколько я понимаю, service.create создает сущность сразуже. если же мы используем context.addobject, то у нас еще есть возможность с ним работать, как с несозданным, до попадания его в систему. соответственно можно во время работы его из контекста выкинуть (неверное?) дабы он не создавался (если нам это стало ненужным). просто задача стоит еще и с точки зрения прав доступа - если у текущего пользователя нет, скажем, права удалять и изменять SalesOrder, то сделав service.create и попытавшись его изменить/удалить, должна вылететь системная ошибка, чтоли, о правах доступа. |
|
![]() |
#3 |
Участник
|
А как можно выполнить эту проверку?
SalesOrderDetail не создать без SalesOrder. Без него система всегда не сможет создать. Разве нет? |
|
![]() |
#4 |
Участник
|
Цитата:
проверять руками всю SalesOrderDetail неоптимально - любое изменение этой сущности, может сделать такую проверку неработающей. |
|
![]() |
#5 |
Участник
|
решение через проверку есть:
Guid newSalesOrderId = Guid.Empty; newSO.Id = Guid.NewGuid(); newSalesOrderId = newSO.Id; svcContext.AddObject(newSO); //создали ордер. добавили в контекст if(checkSalesOrderDetail(curSalesOrderDetail))//ручная проверка полей salesOrderDetail { //если все ОК, добавляем salesOrderDetail в контекст, связывая с ордером: svcContext.AddRelatedObject ( newSO, new Relationship("order_details"), curSalesOrderDetail ); } else { svcContext.DeleteObject(newSO);//иначе удаляем ордер из контекста } svcContext.SaveChanges(); |
|
|
|