Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2012, 22:28   #1
Gladiator____
 
Регистрация: 14.05.2012
Сообщений: 3
Печаль Изменение и удаление записи в бд в Silverlight

Добрый день.
Помогите пожалуйста с такой проблемой:
Есть БД на MySQL, таблицы "reg" и "player", есть сервис AscentGameWcfDataService, есть модель данных AscentGameModel.

Далее есть процедура добавления данных в таблицу reg и player:
Код:
public void registred()
{
AscentGameEntities dc = new AscentGameEntities(new Uri("AscentGameWcfDataService.svc", UriKind.Relative));
reg mob = new reg();
mob.idReg = 0;
mob.Name = NickBox.Text;
mob.Login = LoginBox.Text;
App.Vars.Login = LoginBox.Text;
mob.Password = passBox.Password;
if (M.IsChecked == true) { mob.Sex = "M"; } else { if (W.IsChecked == true) { mob.Sex = "W"; } };
mob.DateOfBorn = datePicker.SelectedDate.Value.ToString("MM/dd/yyyy");
dc.AddToreg(mob);
dc.BeginSaveChanges(SaveChangesOptions.ContinueOnError, new AsyncCallback(c =>
{
try
{
DataServiceResponse response = dc.EndSaveChanges(c);
MessageBox.Show("Поздравляем, вы зарегистрированы");
}
catch { MessageBox.Show("Возникла ошибка! Повторите попытку позже!"); }
}), dc);
}

Код добавления в таблицу player:

Код:
public void addpl()
{
AscentGameEntities dc = new AscentGameEntities(new Uri("AscentGameWcfDataService.svc", UriKind.Relative));
MessageBox.Show(App.Vars.ip.ToString());
player pl = new player();
pl.idPlayer = 0;
pl.idreg = App.Vars.ip;
pl.strenght = 15;
pl.Agility = 15;
pl.stamina = 15;
pl.fortune = 15;
pl.review = 15;
pl.intelligence = 15;
pl.rank = 1;
pl.Ice_experience = 0;
pl.rock_experience = 0;
pl.snow_experience = 0;
pl.experience = 0;
dc.AddToplayer(pl);
dc.BeginSaveChanges(SaveChangesOptions.ContinueOnError, new AsyncCallback(c =>
{
try
{
DataServiceResponse response = dc.EndSaveChanges(c);
}
catch { }
}), dc);
}

где App.Vars.ip = idreg только что зарегистрировавшегося.

Далее, пытаюсь написать код изменения данных в таблице player:

Код:
AscentGameEntities dc = new AscentGameEntities(new Uri("AscentGameWcfDataService.svc", UriKind.Relative));
DataServiceQuery<player> query = (DataServiceQuery<player>)
(fr om i in dc.player
wh ere (i.idreg == App.Vars.ip)
select i);
 
query.BeginExecute(new AsyncCallback(x =>
{
IEnumerable<player> res = query.EndExecute(x);
foreach (var i in res)
{
dc.BeginSaveChanges(SaveChangesOptions.ContinueOnError, new AsyncCallback(c =>
{
i.Points = int.Parse(label9.Content.ToString());
 
i.strenght = int.Parse(label10.Content.ToString());
i.Agility = int.Parse(label11.Content.ToString());
i.stamina = int.Parse(label12.Content.ToString());
i.fortune = int.Parse(label13.Content.ToString());
i.review = int.Parse(label14.Content.ToString());
i.intelligence = int.Parse(label15.Content.ToString());
 
dc.UpdateObject(i);
DataServiceResponse response = dc.EndSaveChanges(c);
}), dc);
}
}), query);
Но этот код не работает, ничего не происходит, будто буквально одной строчки не хватает. Пример с msdn'а ничем не помог, т к возникает ошибка следующего содержания : "Silverlight не позволяет непосредственно производить перечисление по запросу службы передачи данных. Это связано с тем, что при перечислении службе передачи данных автоматически направляется синхронный запрос. Так как Silverlight поддерживает только асинхронные операции, вместо этого необходимо вызвать методы BeginExecute и EndExecute, позволяющие получить результат запроса, который поддерживает перечисление."

Просьба указать на ошибки и/или написать пример кода для редактирования и удаления записи в бд или указать ссылку на статью/пример.

P.S. Жаль что нет возможности спрятать код под спойлер....

Заранее Спасибо.

Последний раз редактировалось Gladiator____; 14.05.2012 в 22:53.
Gladiator____ вне форума Ответить с цитированием
Старый 14.05.2012, 23:02   #2
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Что значит "код не работает, ничего не происходит"?
=master= вне форума Ответить с цитированием
Старый 15.05.2012, 09:02   #3
Gladiator____
 
Регистрация: 14.05.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от =master= Посмотреть сообщение
Что значит "код не работает, ничего не происходит"?
Код вроде как срабатывает, но обновление не происходит..... Т. е. все остается как было. Ошибку то же не показывает, я сделал вывод что все правильно, но не хватает буквально строчки для сохранения сделаных изменений....
Gladiator____ вне форума Ответить с цитированием
Старый 16.05.2012, 00:36   #4
Gladiator____
 
Регистрация: 14.05.2012
Сообщений: 3
По умолчанию

Всем спасибо за помощь.
Вот рабочий код, который изменяет данные в бд:

Код:
var query = (DataServiceQuery<player>)
                (from i in dc.player
                 where i.idreg == App.Vars.ip
                 select i);
           
            query.BeginExecute(new AsyncCallback(x =>
            {
                IEnumerable<player> res = query.EndExecute(x);
                {
                    foreach (var i in res)
                    {
                        i.Points = int.Parse(label9.Content.ToString());
                        i.strenght = int.Parse(label10.Content.ToString());
                        i.Agility = int.Parse(label11.Content.ToString());
                        i.stamina = int.Parse(label12.Content.ToString());
                        i.fortune = int.Parse(label13.Content.ToString());
                        i.review = int.Parse(label14.Content.ToString());
                        i.intelligence = int.Parse(label15.Content.ToString());
                        dc.UpdateObject(i);
                        dc.BeginSaveChanges(SaveChangesOptions.ContinueOnError, new AsyncCallback(c =>
                        {
                            try
                            {
                                DataServiceResponse response = dc.EndSaveChanges(c);
                                MessageBox.Show("updated");
                            }
                            catch { MessageBox.Show("Bозникла ошибка! Повторите попытку позже!");}
                        }), dc);
                    }
                }
            }), query);
Разобрался с 20й попытки...

Тему можно закрывать, вроде как проблема решена.

Последний раз редактировалось Gladiator____; 16.05.2012 в 00:47.
Gladiator____ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение удаление записей из Combobox Re3oFFer БД в Delphi 4 07.07.2011 11:44
Изменение записи файла. natt23 Общие вопросы C/C++ 4 13.03.2011 14:13
Удаление (Изменение) данных из потока chertovich Общие вопросы Delphi 14 26.12.2010 19:13
динамически изменение записи(delphi) DelphiQuestions Помощь студентам 0 23.12.2009 17:43
Изменение записи в БД kuzmich Помощь студентам 8 17.11.2009 11:19