C# Entity Framework如何配置存储过程调用

来源:互联网 发布:网上学编程 编辑:程序博客网 时间:2024/06/14 03:23

Entity Framework机制很方便的使用表和视图,但是针对一些复杂的业务逻辑,他就有点处理性能低下了。

下面是在项目中使用到Oracle 存储过程调用的步骤:开发平台VS2012+Oracle11g。

目前的报表开发流程统一如下,

1.  定义好存储过程和他指针输出以来的视图对象。

     完成包含报表逻辑的视图或者存储过程,测试没有问题,输出的列名和类型完全符合需求上的定义。

2. 创建一张存储过程对于数据集的报表,主要用来存储用来做报表功能模块的数据集,数据库定期处理,导入当天处理完成的数据到报表数据表。

    从视图 或者存储过程中将结果集导入到新表中,并建立主键,触发器,lastmodified,以及将查询条件中所用到的所有字段,加上索引。

3. 使用自己编写的XMLReplace类库对Entity Framework生产的模板类的所有实体类进行替换处理,已经动态添加存储过程对应的Function。

   使用上在代码成,将Oracle 存储过程添加到Entity Framework机制下的 函数功能。

注意:这里添加的Function必须与Oracle Procedure 拥有相当的输入和输出参数,以及参数对于的类型。

这个XMLReplace功能实际上还有处理类名的作用:如在Oracle中TBL_CLAIM表,进行Replace处理之后,在代码中生成CLAIM 实体类。另外Entity Framework会生成实体类对于的所有外键实体类的对应关系。如TBL_STUDENT有FK_CLASS_ID,除了拥有CLASS_ID这个字段,将还会拥有CLASS实体对象的属性。

4.  建TBL_report_对应的specification文件,其泛型参数类型就是新表的类型。

备注:specification文件,时间上就是Linq查询的组合文件,就像摸个查询中拼接所有查询字段的结果,实际上就是sql where 后面的查询语句,最后可在Linq调用数据中的解析文件中看到。

5. 绑定到UI。在页面上调用查询,生成specification,组装分页和排序条件后,返回结果集,传到页面的flexgrid。

这里是采取的Jquery + handle class (ashx.cs)的组合,调用$.ajax方法,success时将返回的数据集绑定到 Jquery flexgrid控件中。

[备注]Jquery flexgrid;Javascript To Json;Ajax+Web service。

 

[总结]以上是开发流程。具体细节可查网上相关资料。

Entity Framework调用存储过程之类的。