存储过程
- 2020年8月24日
- 3分钟阅读
XPO中对存储过程的支持包括以下功能。
#直接调用现有存储过程
您可以使用以下方法来调用存储过程:
为了简化实现,数据模型向导可以选择为视图,触发器和存储过程生成所有必需的持久性类和DDL(数据描述语言)代码。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8yIxsVKr-1612142430649)(https://docs.devexpress.com/XPO/images/storedprocedures_wizardoption12752.png)]
启用“**导入存储过程”**选项时,将激活以下向导页面。
该向导会生成位于StoredSprocHelper.cs(StoredSprocHelper.vb)文件中的静态SprocHelper类。此类提供包装了Session.ExecuteSproc和Session.GetObjectsFromSproc方法的以下静态方法:
方法名称 | 描述 |
---|---|
执行*<存储过程名称>* | 通过Session调用*<存储过程名称>存储过程*。执行Sproc**方法并返回结果集。 |
执行*<存储过程名称>*到对象 | 通过Session调用*<存储过程名称>存储过程*。从Sproc方法获取***对象**并返回<存储过程名称>*结果对象的集合。 |
执行*<存储过程名称>*进入数据视图 | 通过Session调用*<存储过程名称>存储过程*。执行Sproc方法,并返回XPData View类实例,该实例包含*<存储过程名称>* Result对象,这些对象是存储过程执行的结果。此方法还有一个重载,它也调用存储过程,但会填充作为参数传递给它的XPData View**对象。 |
所述**结果是通过其表示存储过程结果向导生成一个非持久类。此类的属性与在上面说明的向导栏中选择的结果集列相对应。
下面的代码示例演示如何使用生成的静态方法来调用存储过程:
public IList<CountEmployeesByClassificationResult> GetEmployeesByClassification(Session session) {
// The ExecHR_CountEmployeesByClassificationIntoObjects method was generated by Data Model Wizard.
return SprocHelper.ExecHR_CountEmployeesByClassificationIntoObjects(session).ToList();
}
#持久性类到MS SQL Server和Oracle数据库视图的映射
此映射是在INSTEAD-OF触发器和存储过程的帮助下执行的,需要执行以下任务:
- 创建一个数据库视图。
- 将持久类映射到此视图。
- 创建用于INSERT,UPDATE和DELETE功能的存储过程。
- 创建INSTEAD-OF触发器,将此功能路由到创建的存储过程。
注意
Advantage,DB2,Firebird,My Sql和Pervasive数据库在生成结果集列时有一些已知的限制,而MSAccess数据库不支持获取存储过程的列表。这些问题可能会影响“数据模型向导”,该向导可以与XPO支持的其他数据库配合使用。无论如何,您都可以使用会话。执行存储过程,会话。从Sproc和Session获取对象。从Sproc 方法获取对象以调用任何数据库的存储过程,MSSql Server除外CE和SQLite数据库,它们不支持存储过程。
注意
据库的存储过程,MSSql Server除外CE和SQLite数据库,它们不支持存储过程。
注意
您可以尝试在“查询数据存储”中使用此处描述的功能。****存储过程中的部分XPO教程演示(C:\用户\公用\文档\开发快速演示20. 2 \组件\赢形式\ BIN \ Xpo博览会教程。exe文件)。