Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将Linq设置为SQL和WCF_Asp.net_Wcf_Linq To Sql - Fatal编程技术网

Asp.net 如何将Linq设置为SQL和WCF

Asp.net 如何将Linq设置为SQL和WCF,asp.net,wcf,linq-to-sql,Asp.net,Wcf,Linq To Sql,因此,我冒险进入Linq和WCF web服务的世界,但我似乎无法实现这一奇迹。我有一个非常基本的WCFWeb服务,我可以让我以前的SqlConnection调用工作并返回一个数据集。但是我不知道如何让Linq到SQL查询工作。我猜这可能是权限问题,因为我需要使用一组特定的凭据连接到SQL数据库,但我不知道如何测试这是否是问题所在。我尝试过使用这两个连接字符串,但两个字符串都没有给出不同的结果 <add name="GeoDataConnectionString" connectionStr

因此,我冒险进入Linq和WCF web服务的世界,但我似乎无法实现这一奇迹。我有一个非常基本的WCFWeb服务,我可以让我以前的SqlConnection调用工作并返回一个数据集。但是我不知道如何让Linq到SQL查询工作。我猜这可能是权限问题,因为我需要使用一组特定的凭据连接到SQL数据库,但我不知道如何测试这是否是问题所在。我尝试过使用这两个连接字符串,但两个字符串都没有给出不同的结果

<add name="GeoDataConnectionString" connectionString="Data Source=SQLSERVER;Initial Catalog=GeoData;Integrated Security=True"
         providerName="System.Data.SqlClient" />

<add name="GeoDataConnectionString" connectionString="Data Source=SQLSERVER;Initial Catalog=GeoData;User ID=domain\userName; Password=blahblah; Trusted_Connection=true"
         providerName="System.Data.SqlClient" />
GeoData.dbml中只有一个简单的表,其中包含城市id和城市名称的列表。我还将DataContext上的“序列化模式”更改为“单向”,根据我所阅读的内容,这需要为WCF执行

当我运行该服务时,我得到这个作为返回:从[dbo].[Cities]中选择[t0].[DESCRIPTION]作为[t0],其中[t0].[CITY\u ID]=@p0

当我写这篇文章的时候,我意识到也许我的查询都搞糟了?

试试这个:

public string GetCity(int cityId)
{
    GeoDataContext db = new GeoDataContext();
    var city = db.Cities.SingleOrDefault(c => c.CITY_ID == 30429);
    return city.DESCRIPTION;
}

您的查询的问题是,它没有在
var
中返回
字符串,而是返回
IQueryable
。因此,当您
ToString()
IQueryable时,它必须返回由IQueryable表示的SQL查询的字符串表示形式。

Wow!非常感谢你!我想我显然不明白如何正确地编写查询。好吧,至少我知道今天剩下的时间我要做些什么,为了提高效率。
public string GetCity(int cityId)
{
    GeoDataContext db = new GeoDataContext();
    var city = db.Cities.SingleOrDefault(c => c.CITY_ID == 30429);
    return city.DESCRIPTION;
}