我正在使用VS2010、C#、ExcelFramework4 (DB provider Microsoft SQL Server2008 R2)为.Net编写一个外接程序。其主要思想是让用户对数据库执行预定义的查询,以便将数据提取到Excel中。
假设我将硬编码的查询存储在数据库的表查询中。因此,我可以使用Entity Framework来实现表查询。表中列出的这些查询可以返回从单个值到多个记录的任何值。
我对实体框架一无所知。现在,我读到可以直接对数据库here执行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的结果,然后粗略地将其转换为字符串。好吧,我知道这不是很好的编码,但只需将其视为一个示例。如何获取返回的实际查询名称?
在本例中,它只是一个值,但是如果查询返回更多的值(我甚至可能不知道它是否是字符串),我该如何创建适当的返回类型呢?
发布于 2013-05-30 11:29:11
以下是关于字符串的简单示例的答案:
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; }
我还没有用其他类型替换string类型的解决方案,尽管我正在研究如果查询将有多个字符串结果,则返回Datatable的问题。
发布于 2013-05-28 10:44:40
直接使用SQL命令不是一个好方法,为什么不使用LINQ呢?在您的示例中,您可以使用:
var result = (from q in dataContext.SYMXLSQueries
where q.ID == 2
select q.QueryName).ToArray();
这将返回一个字符串数组(如果QueryName是一个varchar...)
https://stackoverflow.com/questions/16789126
复制