WCF и SQL Server: изменения в БД отображаются только после перезапуска приложения - PullRequest
1 голос
/ 03 декабря 2009

Я разрабатываю клиент-серверное приложение с использованием WCF и Linq2Sql. Моя серверная программа предоставляет клиенту интерфейс, который обеспечивает методы чтения и записи в мою базу данных SQL Server. Но когда клиент записывает некоторую дату в БД, perhabs некоторое время ждет, а затем пытается прочитать эти данные из БД, создается впечатление, что в БД не было записано никаких данных, но если я перезапускаю свое приложение на стороне сервера или выполняю отсоединение БД и Повторно подключив или перезапустив sqlserver-service, моя клиентская программа может получить эти данные из серверной программы. У кого-нибудь есть идеи, что не так с моим приложением (сервером?) И как это исправить?

ОБНОВЛЕНИЕ: я использую Linq2Sql (вызывая CataContext.SubmitChanges ()).

ОБНОВЛЕНИЕ 2: я обнаружил, что если я добавлю несколько новых строк в свою таблицу, все будет правильно, но когда я обновляю некоторые фрагменты строки (некоторые свойства объектов) и затем сохраняю изменения, изменения становятся отображается только после переподключения к БД. Похоже, что он не сбрасывал данные сразу после обновления некоторых свойств и вызова DataContext.SubmitChanges ().

Ответы [ 2 ]

0 голосов
/ 23 декабря 2009

Я сталкиваюсь с точно такой же проблемой, но пока не нашел решения. Однако по какой-то причине я преобразовал один из методов get и save моего объекта для чтения и записи локального XML-файла вместо базы данных. Изменения были немедленно отражены в ответе WCF. Так что, похоже, это не проблема WCF.

Мое приложение достаточно простое, чтобы я мог просто использовать XML-файлы и DataContractSerializer. Прежде чем я сделаю этот решительный шаг, мне бы очень хотелось узнать, почему это происходит.

Я также использую Linq to SQL. Мой следующий тест может состоять в том, чтобы использовать это приложение, поэтому я могу закончить дамп базы данных полностью для первого выпуска.

Вот мысль ... Это как-то связано со службой WCF, возможно, не выпускающей свой DataContext? Я еще не тестировал его, но мой интерфейс редактора БД напрямую связан с базой данных через Linq to SQL. Когда он сохраняет некоторые данные, получает ли контекст WCF уведомление?

0 голосов
/ 03 декабря 2009

У меня нет ответа, но есть идеи о том, как еще раз отследить проблему. Как вы пишете в БД? Используете ли вы транзакции, которые, возможно, остаются открытыми? Можете ли вы запросить обновления в базе данных, когда они не отображаются в вашем ответе WCF? Ваше обновление поддерживает блокировки и как-то не освобождает их? Вы исключили кеширование как причину?

Попробуйте выполнить удаленную отладку, чтобы узнать, что происходит на сервере. Также может помочь трассировка WCF.

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