Приветствую!
Недавно познакомился с такими вещами, как Visual Studio, ASP.NET, NHibernate.
Сейчас вроде все настроил, получаю данные из БД (FireBird) через NHibernate. Отображаются объекты.
Далее интереснее. Изменение тех или иных записей в таблицах в основном происходит через хранимые процедуры БД, так как помимо самих изменений выполняет много дополнительных операций (запись в логи, формирование вспомогательных данных для отчетов и т.п.). Вот и решил вызвать хранимую процедуру посредством NHibernate. Делаю так:
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. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94.
public void UpdateWare(S_Ware ware)
{
var httpCookie = HttpContext.Current.Request.Cookies["mr3UserId"];
if (httpCookie != null)
{
var mr3UserId = int.Parse(httpCookie.Value);
using (var transaction = _session.BeginTransaction())
{
#region update_s_ware
_session.CreateSQLQuery(
"execute procedure spiu_ware (:puser, :precstate, :pid, :pstructure, :pmodel, :pcur, :pcost, :pflags, :pnotes, :pstore, :pnststore, :pweight, :pkind, " +
":porig_name, :porig_art, :pdrawing_num, :pshape_info, :psupply_code, :psupply_delay, :pprice_delay, :pmax_qty, :ppallet_qty, :ppx, :ppy, :pyassp," +
":ppreyassp, :pnum_packs, :pdx, :pdy, :pdz, :praspil_type, :pware_type, :pcustoms_note, :puse_flag, :pdoc19kind, :pc_manager, :pc_ware_group, :pc_ware_pack," +
":pw_qty, :pv_qty, :psome_weight, :psome_volume, :psome_dx, :psome_dy, :psome_dz, :pcustoms_cost, :pspec_ware_descr, :pspec_model_descr, :prelevance_date," +
":pcatalogs_flag, :pinput_date, :psuspension_date, :presumption_date, :psuplier_id, :ppack_multiple_sale, :pkoef_nz, :pkratnost, :prazmer_by_param, :pfoto_name," +
":pspec_flags, :pspec_cost_with_brak, :pnds, :pcost_without_nds, :pprice_spec, :pprice_cost, :pc_commersant, :pc_acc)")
.SetParameter("puser", mr3UserId, NHibernateUtil.Int32)
.SetParameter("precstate", 1 /* 0 – если надо добавить запись, 1 – если отредактировать */,
NHibernateUtil.Int32)
.SetParameter("pid", ware.C_Ware, NHibernateUtil.Int32)
.SetParameter("pstructure", ware.C_Structure, NHibernateUtil.Int32)
.SetParameter("pmodel", ware.C_Model, NHibernateUtil.Int32)
.SetParameter("pcur", ware.C_Cur, NHibernateUtil.Int32)
.SetParameter("pcost", ware.Cost, NHibernateUtil.Decimal)
.SetParameter("pflags", ware.Flags, NHibernateUtil.Int32)
.SetParameter("pnotes", ware.Notes, NHibernateUtil.String)
.SetParameter("pstore", ware.C_Store, NHibernateUtil.Int32)
.SetParameter("pnststore", ware.C_Nst_store, NHibernateUtil.Int32)
.SetParameter("pweight", ware.Weight, NHibernateUtil.Decimal)
.SetParameter("pkind", ware.Kind, NHibernateUtil.Int32)
.SetParameter("porig_name", ware.Orig_Name, NHibernateUtil.String)
.SetParameter("porig_art", ware.Orig_Art, NHibernateUtil.String)
.SetParameter("pdrawing_num", ware.Drawing_Num, NHibernateUtil.String)
.SetParameter("pshape_info", ware.Shape_Info, NHibernateUtil.String)
.SetParameter("psupply_code", ware.Supply_Code, NHibernateUtil.String)
.SetParameter("psupply_delay", ware.Supply_Delay, NHibernateUtil.Int32)
.SetParameter("pprice_delay", ware.Price_Delay, NHibernateUtil.Int32)
.SetParameter("pmax_qty", ware.Max_QTY, NHibernateUtil.Int32)
.SetParameter("ppallet_qty", ware.Pallet_QTY, NHibernateUtil.Int32)
.SetParameter("ppx", ware.PX, NHibernateUtil.Decimal)
.SetParameter("ppy", ware.PY, NHibernateUtil.Decimal)
.SetParameter("pyassp", ware.YASSP, NHibernateUtil.Date)
.SetParameter("ppreyassp", ware.PreYASSP, NHibernateUtil.Date)
.SetParameter("pnum_packs", ware.Num_Packs, NHibernateUtil.Int32)
.SetParameter("pdx", ware.DX, NHibernateUtil.Decimal)
.SetParameter("pdy", ware.DY, NHibernateUtil.Decimal)
.SetParameter("pdz", ware.DZ, NHibernateUtil.Decimal)
.SetParameter("praspil_type", ware.C_Raspil_Type, NHibernateUtil.Int32)
.SetParameter("pware_type", ware.C_Ware_Type, NHibernateUtil.Int32)
.SetParameter("pcustoms_note", ware.Customs_Note, NHibernateUtil.String)
.SetParameter("puse_flag", ware.Use_Flag, NHibernateUtil.Int32)
.SetParameter("pdoc19kind", ware.Doc19Kind, NHibernateUtil.Int32)
.SetParameter("pc_manager", ware.C_Manager, NHibernateUtil.Int32)
.SetParameter("pc_ware_group", ware.C_Ware_Group, NHibernateUtil.Int32)
.SetParameter("pc_ware_pack", ware.C_Ware_Pack, NHibernateUtil.Int32)
.SetParameter("pw_qty", ware.W_QTY, NHibernateUtil.Int32)
.SetParameter("pv_qty", ware.V_QTY, NHibernateUtil.Int32)
.SetParameter("psome_weight", ware.Some_Weight, NHibernateUtil.Decimal)
.SetParameter("psome_volume", ware.Some_Volume, NHibernateUtil.Decimal)
.SetParameter("psome_dx", ware.Some_DX, NHibernateUtil.Decimal)
.SetParameter("psome_dy", ware.Some_DY, NHibernateUtil.Decimal)
.SetParameter("psome_dz", ware.Some_DZ, NHibernateUtil.Decimal)
.SetParameter("pcustoms_cost", ware.Customs_Cost, NHibernateUtil.Decimal)
.SetParameter("pspec_ware_descr", ware.Spec_Ware_Descr, NHibernateUtil.Int32)
.SetParameter("pspec_model_descr", ware.Spec_Model_Descr, NHibernateUtil.Int32)
.SetParameter("prelevance_date", ware.Relevance_Date, NHibernateUtil.Date)
.SetParameter("pcatalogs_flag", ware.Catalogs_Flag, NHibernateUtil.Int32)
.SetParameter("pinput_date", ware.Input_Date, NHibernateUtil.Date)
.SetParameter("psuspension_date", ware.Suspension_Date, NHibernateUtil.Date)
.SetParameter("presumption_date", ware.Resumption_Date, NHibernateUtil.Date)
.SetParameter("psuplier_id", ware.C_Supplier, NHibernateUtil.Int32)
.SetParameter("ppack_multiple_sale", ware.Pack_Multiple_Sale, NHibernateUtil.Int32)
.SetParameter("pkoef_nz", ware.Koef_NZ, NHibernateUtil.Decimal)
.SetParameter("pkratnost", ware.Kratnost, NHibernateUtil.Decimal)
.SetParameter("prazmer_by_param", ware.Razmer_By_Param, NHibernateUtil.Decimal)
.SetParameter("pfoto_name", ware.Foto_Name, NHibernateUtil.String)
.SetParameter("pspec_flags", ware.Spec_Flags, NHibernateUtil.Int32)
.SetParameter("pspec_cost_with_brak", ware.Spec_Cost_With_Brak, NHibernateUtil.Decimal)
.SetParameter("pnds", ware.Nds ?? 0, NHibernateUtil.Decimal)
.SetParameter("pcost_without_nds", ware.Cost_Without_Nds ?? 0, NHibernateUtil.Decimal)
.SetParameter("pprice_spec", ware.C_Price_Spec, NHibernateUtil.Int32)
.SetParameter("pprice_cost", ware.Price_Cost, NHibernateUtil.Decimal)
.SetParameter("pc_commersant", ware.C_Commersant, NHibernateUtil.Int32)
.SetParameter("pc_acc", ware.C_Acc, NHibernateUtil.Int32)
;
#endregion
transaction.Commit();
}
}
}
Все отрабатывает без ошибки, но проверяю изменения, вносимые написанной процедурой UpdateWare - никаких изменений в БД.
Проверил работоспособность хранимой процедуры - ввел все параметры руками через IBExpert - все поменялось как и должно было.
Подскажите, пожалуйста, в чем может быть проблема? Что я не доделал или неправильно сделал?! Заранее спасибо!
|