params新手object[]...and想尝试Returning a DataTable using Entity Framework ExecuteStoreQuery的建议
如何使用实体框架将这些参数(guid gId, string sName)传递给存储过程?这就是我想要尝试的,因为我需要返回一个数据表。
public DataTable ExecuteStoreQuery(string commandText, params Object[] parameters)
{
DataTable retVal = new DataTable();
retVal = context.ExecuteStoreQuery<DataTable>(commandText, parameters).FirstOrDefault();
return retVal;
}发布于 2013-11-06 02:44:03
正如您所链接的问题/答案所告诉您的,ExecuteStoreQuery返回实体-它不能返回DataTable。
您可以使用它返回一个实体集合,然后使用DataTableExtensions将其转换为DataTable
public DataTable ExecuteStoreQuery(string commandText, params Object[] parameters)
{
DataTable retVal;
var entities = context.ExecuteStoreQuery<MyEntity>(commandText, parameters)
.Take(1); // use `Take` instead of `First` to keep it as a collection
retVal = entities.AsEnumerable().CopyToDataTable();
return retVal;
}就params而言,它只允许在方法调用中将值串在一起,而不是将它们打包在object[]中
DataTable dt = ExecuteStoreQuery("SELECT * FROM...", guid, sName);发布于 2013-11-06 02:37:29
The idea of params (which always has to be the last decalared parameter in a function can be unlimited for example
Function Foo(string s,params Object[] alist)
{
//whatever
}
Cats cat = new Cats();//I put an object here because cat is an object, if it was ints they would all have to be ints
Foo("ok",cat);
Foo("ok", cat,cat,cat,cat,cat,cat);
are both valid是这样的,但是您想要传递SQL参数,所以...
dt = ExecuteStoreQuery("INSERT INTO STATUS(ITEMTYPE,PRODESC) values(@ITEMTYPE,'@PRODESC')",new SqlParameter("@ITEMTYPE", 2),new SqlParameter("@PRODESC", "Obama sucks"));或者更多的眼线,这样我就能看得更清楚
object[] obj;
obj[0] = new SqlParameter("@ITEMTYPE", 2);
obj[1] = new SqlParameter("@PRODESC", "Obama sucks");
dt = ExecuteStoreQuery("INSERT INTO STATUS(ITEMTYPE,PRODESC) values(@ITEMTYPE,'@PRODESC')",obj);https://stackoverflow.com/questions/19796078
复制相似问题