【发布时间】:2015-01-29 22:08:24
【问题描述】:
我正在编写一个 WCF 服务,它利用 Entity Framework 6 (EF) 来查询 SQL Server。我的大多数查询方法都是用 LINQ 编写的。都很好。
我需要编写一个参数化查询。阅读了这个:http://adicodes.com/entity-framework-raw-sql-queries-and-stored-procedure-execution/ 这是我目前所得到的:
public string GetLinkItemValue(string linkTable, string linkItem, string linkGUID)
{
try
{
var LinkItem = new SqlParameter("@linkItem", linkItem);
var LinkTable = new SqlParameter("@linkTable", linkTable);
var LinkGUID = new SqlParameter("@LinkGUID", linkGUID);
var objectresult = _Context.Database.SqlQuery<string>("SELECT c.@linkItem FROM ISESEntities.@linkTable AS c WHERE c.CCCPGUID= @linkGUID");
return objectresult.ToString();
}
catch (Exception)
{
return string.Format("There was a problem retrieving the Link Item value for LinkTable[{0}],LinkItem[{1}],LinkGUID[{2}].", linkTable, linkItem, linkGUID);
}
}
这显然不太正确,并且在c.@linkItem 处的查询字符串中消失了,我已经将查询字符串作为objectresult 字符串返回,但似乎无法从查询中返回结果。
即使我简化了查询并删除了参数,事实也是如此:
var objectresult = _Context.Database.SqlQuery<string>("SELECT a.ArticleTitle FROM ISESEntities.vwArticles AS a where a.ArticleId = 01");
objectResult返回sql查询字符串值而不是结果。
我哪里错了?
【问题讨论】:
-
您遇到了什么错误?能详细描述一下吗?
-
afaik 你不能参数化标识符(比如你的表名或列名)
标签: c# sql sql-server linq entity-framework