首页 新闻 会员 周边

关于EF执行Oracle存储过程获得数据集的方法?

0
悬赏园豆:10 [待解决问题]

 我用EF去执行Oracle存储过程,想要获得返回的数据集,有什么办法吗

Dunn的主页 Dunn | 初学一级 | 园豆:129
提问于:2014-03-24 16:09
< >
分享
所有回答(2)
0

EF对存储过程的支持基本等于废,感觉这技术都没成熟

虾哈哈 | 园豆:223 (菜鸟二级) | 2014-03-24 16:13

我擦~~那这么办,要用存储过程,只有用ado.net吗

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-24 16:16

@Dunn: 网上不是有很多方法么,好像要手动配置model吧

支持(0) 反对(0) 虾哈哈 | 园豆:223 (菜鸟二级) | 2014-03-24 16:18

@虾哈哈: 我试过一个办法,可以获得数据集,但是貌似要配置实体类型,还要在web.config添加节点,这个很麻烦~~也不科学。

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-24 16:19

@Dunn: 所以用来更新数据还可以,复杂一点的查询就悲剧了

支持(0) 反对(0) 虾哈哈 | 园豆:223 (菜鸟二级) | 2014-03-24 16:22

@Dunn: 还有就是自己做一个vs插件自己解析并更新代码,但这就要看自己的水平怎么样了

支持(0) 反对(0) 虾哈哈 | 园豆:223 (菜鸟二级) | 2014-03-24 16:26

@虾哈哈: 好复杂,绝对的新手,准备毕业的学生~~

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-24 16:27
0

MsSql是可以的,Oracle不知道。如

假设,存储过程GetNewUser,一个参数@CreateDate

var query = dataContext.SqlQuery<User>("exec GetNewUser @CreateDate", new SqlParameter { ParameterName = "@CreateDate", Value = DateTime.Now });

// ExecuteSqlCommand 执行命令 类似

Qlin | 园豆:2403 (老鸟四级) | 2014-03-24 16:49

你这个的话,也是支持单表的存储过程吧,如果是跨了表的存储过程,应该也是没办法的了

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-24 17:02

@Dunn: 

晕,脚本都提交到数据库里,跟EF有关系?

肯定支持,楼主是 查询还是 执行命令。

查询的话,由于是强类型,会根据查询的列来反射,如果字段不对会出错,查询列,如果没有相应的实体,就新建一个,如 查询出多张表的列。

支持(0) 反对(0) Qlin | 园豆:2403 (老鸟四级) | 2014-03-24 17:13

@Qlin: 我的是存储过程是查询的。你上面的传了<user>进去了,只能返回user类型的数据集了,我的意思是,如果我的存储过程里面,如果满足A条件,返回user;else  则返回custom。我的意思是这样的跨表,不是说返回的一个数据集里面包含了两个表的列。这样就无法选择反射的类型了

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-24 17:26

@Dunn: 

存储过程有用就行。
至于你的 返回类型是另外一个问题了,感觉没区别,试想 如果不是执行存储过程返回的,是正常linq查询返回的,你又如何接收结果,可以代码里 if else,也可以数据库里进行统一,或者新建类

支持(0) 反对(0) Qlin | 园豆:2403 (老鸟四级) | 2014-03-24 17:42

@Qlin: 不是你想的那样,你可以试试,你就明白我的痛苦了。我也知道代码里可以if~else。但是现在给出了再存储过程里if~else,我没办法啊~~~

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-24 17:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册