【问题标题】:How do I setup Linq to SQL and WCF如何将 Linq 设置为 SQL 和 WCF
【发布时间】:2010-04-22 20:09:58
【问题描述】:

所以我正在冒险进入 Linq 和 WCF Web 服务的世界,但我似乎无法让魔法发生。我有一个非常基本的 WCF Web 服务,我可以让我的旧 SqlConnection 调用工作并返回一个 DataSet。但我不能/不知道如何让 Linq to 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" />

这是我的服务中执行查询的函数,我有接口添加[OperationContract]

public string GetCity(int cityId)
        {
            GeoDataContext db = new GeoDataContext();
            var city = from c in db.Cities
                       where c.CITY_ID == 30429
                       select c.DESCRIPTION;

            return city.ToString();
        }

GeoData.dbml 中只有一个简单的表,其中包含城市 ID 和城市名称的列表。我还将 DataContext 上的“序列化模式”更改为“单向”,据我所知,这需要为 WCF 完成。

当我运行服务时,我得到这个作为返回:SELECT [t0].[DESCRIPTION] FROM [dbo].[Cities] AS [t0] WHERE [t0].[CITY_ID] = @p0

Dang,所以当我写这篇文章时,我意识到也许我的查询都搞砸了?

【问题讨论】:

    标签: asp.net wcf linq-to-sql


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

    • 哇!非常感谢!我想我显然不明白如何正确编写查询。好吧,至少我知道我将在这一天剩下的时间里做什么,这样才能提高工作效率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多