1

我正在使用 VS2010、C#、.Net Framework 4(数据库提供程序 Microsoft SQL Server 2008 R2)为 Excel 编写插件。主要思想是让用户对数据库执行预定义的查询,以便将数据拉入 Excel。

假设我将硬编码查询存储在数据库中的表 [Queries] 中。所以我可以使用实体框架来访问表查询。表中列出的这些查询可以返回从单个值到多个记录的任何内容。

我对实体框架相当无知。现在,我读到这里可以直接对数据库执行 T-SQL 。这很有用,但我很难恢复结果。

using (SYMNHM_DEVEntities dataContext = new SYMNHM_DEVEntities())
        {

            var query = "Select [Query Name] from [SYM XLS Queries] where [Query ID] = 2";
            str = dataContext.ExecuteStoreCommand(query) + "";

        }

这给出了 -1 的结果,然后将其粗略地制成一个字符串。好的,我知道这不是好的编码,但只是将其视为示例。如何获得返回的实际 [查询名称]?

在这种情况下,它只是一个值,但是如果查询会返回更多值(我什至可能不知道它是否是字符串),我该如何创建适当的返回类型?

4

2 回答 2

1

以下是有关字符串的简单示例的答案:

using (MyEntities dataContext = new MyEntities())
    {
      var query = (from q in dataContext.Queries
                     where q.Query_Name == queryName
                     select q.Query).Single();



      queryResults = dataContext.ExecuteStoreQuery<string>(query);
      List<string> list = new List<string>(queryResults.ToArray<string>());
      return list; }

我还没有用其他东西替换字符串类型的解决方案,尽管我正在研究如果查询有多个字符串结果,则返回 Datatable 的问题。

于 2013-05-30T11:29:11.337 回答
0

直接使用 SQL 命令不是一个好习惯,为什么不使用 LINQ 呢?在您的示例中,您可以使用:

var result = (from q in dataContext.SYMXLSQueries
             where q.ID == 2
             select q.QueryName).ToArray();

这将返回一个字符串数组(如果 QueryName 是 varchar ...)

于 2013-05-28T10:44:39.503 回答