浅谈ADO.NET Entity Data Model 中如何调用有返回值的存储过程
时间:2010-12-18 来源:封闭
为什么要这么做呢,原因有以下几个:
1、使用LINQ来操作比较方便吧,这是其一。
2、知道LINQ,却很少使用,这是其二。
3、如果查询的东西过多,使用SQL语句来查觉得挺不方便的,当然啦,工夫还没到家。嘿嘿,这是其三;
原本以为使用LINQ会很快就能把一些东西给搞定,没想到也出了很多问题,比如增、删、改等问题的出现。
当然了,问题的出现,还是必须解决的,下面就介绍一下在LINQ 中 如何调用 ADO.NET Entity Data Model 中的存储过程;
首先,我们先新建一个实体集。
接着边选择数据库模型:
这里我们默认直接下一步:
然后选择数据库:
最后一步就是选择要包含的表、试图、存储过程。
这里可根据自己项目的需要去导入,或者后期去更新数据库模型,再添加也可,如图所示:
这样,基本的实体类就搭建完成了。
接下来,我们来导入存储过程函数:
然后设置返回类型:
最后确定,就完成了函数的导入;
其实,在使用存储过程时,会有问题,如果单单使用返回实体类的存储过程,
那么可以直接在代码中点出我们所设置的函数名称,但是,如果返回的类型
如果是空或者标量类型,那么大家就会发现,这个存储过程我们是点不出来的。
所以,这个就是本文要解决的问题,如何调用返回标量类型的存储过程。
我就直接亮代码了,跟SQL语句也差不多,相信有写过SQL语句的朋友都能看懂吧。
//先导入部分命名空间:
using System.Data.EntityClient;
EntityConnection conn = new EntityConnection(); /
string strConn = ConfigurationManager.ConnectionStrings["Test"].ToString(); //从配置文件中获取连接字符串
conn.ConnectionString = strConn; //设置连接
EntityCommand cmd = new EntityCommand();
cmd.Connection = conn;
cmd.CommandText = "Test.proc_DelAlbum"; //这里必须注意的是,必须是: 实体名.存储过程名
cmd.CommandType = System.Data.CommandType.StoredProcedure; //设置执行存储过程
EntityParameter parameter = new EntityParameter("articleTypeID", DbType.Int32);//存储过程所接收的参数,视存储过程而定咯。
//如果是在数据库标识为outPut的参数,则必须声明一个output的参数
//EntityParameter output = new EntityParameter("output", DbType.Int32, 0, ParameterDirection.Output, false, 0, 0, "", DataRowVersion.Current, "");
parameter.Value = articleType.ArticleTypeID;
cmd.Parameters.Add(parameter);
conn.Open();
cmd.ExecuteNonQuery();
还必须注意的一点是,如果在存储过程返回的是一个标量,则存储过程中的结尾必须是 select @output 结尾。否则回报错;最好不要使用return;
如果调用返回实体的存储过程相对来说就比较容易啦。
只需要实例化实体对象,在点出存储过程,在放入相应的参数,就可以完成了。
写的比较潦草,只须理解大概怎么去使用它就行了。以后再遇到这个问题,也好有个解决方案,不要像我一样,找了那么久,才找到问题的解决渠道。