Как настроить Linq для SQL и WCF - PullRequest
1 голос
/ 23 апреля 2010

Итак, я углубляюсь в мир веб-сервисов Linq и WCF и, похоже, не могу заставить волшебство произойти.У меня ОЧЕНЬ базовый веб-сервис WCF, и я могу заставить мои старые вызовы 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 содержит только одну простую таблицу со списком идентификаторов городов и названий городов.Я также изменил «Режим сериализации» в DataContext на «Однонаправленный», который из того, что я прочитал, должен быть сделан для WCF.

Когда я запускаю сервис, я получаю это как возврат: SELECT [t0]. [ОПИСАНИЕ] ОТ [dbo]. [Города] КАК [t0] ГДЕ [t0]. [CITY_ID] = @ p0

Данг, поэтому, когда я пишу это, я понимаю, что, возможно, мой запросвсе испорчено?

1 Ответ

3 голосов
/ 23 апреля 2010

Попробуйте это:

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

Проблема вашего запроса в том, что он не возвращает string в var, он возвращает IQueryable. Поэтому, когда вы ToString() IQueryable, он должен возвращать строковое представление запроса SQL, представленного IQueryable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...