首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ExecuteStoreQuery EntityFramework

ExecuteStoreQuery EntityFramework
EN

Stack Overflow用户
提问于 2013-11-06 02:27:12
回答 2查看 14.9K关注 0票数 1

params新手object[]...and想尝试Returning a DataTable using Entity Framework ExecuteStoreQuery的建议

如何使用实体框架将这些参数(guid gId, string sName)传递给存储过程?这就是我想要尝试的,因为我需要返回一个数据表。

代码语言:javascript
复制
public DataTable ExecuteStoreQuery(string commandText, params Object[] parameters)
{
   DataTable retVal = new DataTable();
   retVal = context.ExecuteStoreQuery<DataTable>(commandText, parameters).FirstOrDefault();    
   return retVal;
}
EN

回答 2

Stack Overflow用户

发布于 2013-11-06 02:44:03

正如您所链接的问题/答案所告诉您的,ExecuteStoreQuery返回实体-它不能返回DataTable

您可以使用它返回一个实体集合,然后使用DataTableExtensions将其转换为DataTable

代码语言:javascript
复制
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[]

代码语言:javascript
复制
DataTable dt = ExecuteStoreQuery("SELECT * FROM...", guid, sName);
票数 3
EN

Stack Overflow用户

发布于 2013-11-06 02:37:29

代码语言:javascript
复制
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参数,所以...

代码语言:javascript
复制
            dt = ExecuteStoreQuery("INSERT INTO STATUS(ITEMTYPE,PRODESC) values(@ITEMTYPE,'@PRODESC')",new SqlParameter("@ITEMTYPE", 2),new SqlParameter("@PRODESC", "Obama sucks"));

或者更多的眼线,这样我就能看得更清楚

代码语言:javascript
复制
        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);
票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19796078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档