|
WCF Data Services, Stored Procedure, Complex Type and Collections
|
|||
---|---|---|---|
#18+
Задача простая, выполнить хранимую процедуру с параметрами и получить результат. В WCF хранимую процедуру реализую как в примере из книги OData Programming Cookbook for .NET Developers Проверяю решение в браузере вызовом своей SP с параметрами - работает. Перехожу в клиентское приложение, пытаюсь вызвать ХП следующим образом: Код: c# 1. 2. 3.
Попутно проверяю получение List<T>: Код: c# 1. 2.
В OData 5.0.0 и OData 5.3.0 ошибки разные. OData 5.0.0 Код: plaintext 1. 2. 3. 4.
GetStringList: В строковом значении обнаружен XML-узел типа "Element". Элемент со строковым значением может содержать только узлы Text, CDATA, SignificantWhitespace, Whitespace и Comment. uspGetOrdersByCustomer: Свойство "element" не существует в типе "WpfApplication.MainDataServiceReference.uspGetOrdersByCustomer_Result". Используйте только имена свойств, определенные в типе. OData 5.3.0 Код: plaintext 1. 2. 3. 4.
GetStringList: Невозможна материализация коллекции типов-примитивов или сложных типов без типа "Edm.String", который коллекцией. uspGetOrdersByCustomer: Невозможна материализация коллекции типов-примитивов или сложных типов без типа "WpfApplication.MainDataServiceReference.uspGetOrdersByCustomer_Result", который коллекцией. Data Services Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Client side Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Stored Procedure Код: sql 1. 2. 3. 4. 5. 6. 7.
Метод GetOrderById работает, но он в отличии от моей хранимой процедуры возвращает не ComplexType, а EntityType. Баг описан на Microsoft Connect Какие варианты можно применить в обход данной проблемы? Проект: http://sdrv.ms/14Mcf2E ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2013, 12:03 |
|
WCF Data Services, Stored Procedure, Complex Type and Collections
|
|||
---|---|---|---|
#18+
eXplowar, да слушай, ты забурился не в то ведро и теперь изляпался)) wcf не имеет прослойки для работы с БД. он только в своей прослойке работает на базе servicecontract. автор http://localhost:4637/MainDataService.svc/uspGetOrdersByCustomer?customerId={0} этот адрес вызова просто вызывает метод из класс помеченного servicecontract и ожидает от метода результата. Допустим этот метод List<...> uspGetOrdersByCustomer (int customerId) тип возвращаемых данных List<...> Чтобы это сделать без всяких надстроек для ускорения работы, просто сделай следующее: 1.в методе uspGetOrdersByCustomer используй ADO.net или sql to linq , чтобы вызвать процедуру на БД и взять от нее результат, а потом просто подставить результат в return метода. и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2013, 12:51 |
|
|
start [/forum/topic.php?fid=19&msg=38181136&tid=1397101]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 382ms |
0 / 0 |