powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Откат изменений при использовании DataService
5 сообщений из 5, страница 1 из 1
Откат изменений при использовании DataService
    #36491786
vinvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть ранее я некорректно задавал вопрос. Попробую исправиться.

Использую EF, DataService, FW 4.0.
Имею две формы -мастер и детайл.

При загрузке мастер формы - делаю запрос и привязываю данные:

Код: plaintext
1.
2.
3.
            se = new skladEntities(new Uri(Properties.Settings.Default.ServiceString));
            firm_localBindingSource.DataSource = from ff in se.firm
                                                 where ff is firm_local 
                                                 select ff;

Затем при двойном клике на гриде вызываю детайл форму:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
  FirmLocalDetail fld = new FirmLocalDetail();
  fld.firm_localBindingSource.DataSource = this.firm_localBindingSource.DataSource;
  frm_local.BeginEdit();

  if (fld.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
                {
                    frm_local.CancelEdit();
                }

По моему замыслу в BeginEdit(); сущность должна сериализоваться и записываться в массив, а в CancelEdit(); - восстанавливаться.
Но как это правильно сделать не знаю. Есть набросок (добавление к частичному классу), но он не работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
    [Serializable]
    public abstract partial class firm
    {
        private byte[] originalState;
        private firm firmItem;

        public virtual void BeginEdit()
        {
            BinaryFormatter formatter = new BinaryFormatter();
            firmItem = this;

            using (MemoryStream stream = new MemoryStream())
            {
                formatter.Serialize(stream, this);
                stream.Position = 0;
                originalState = new byte[stream.Length];
                // сохраняемся
                stream.Read(originalState, 0, (int)stream.Length);
            }
        }

        public virtual void CancelEdit()
        {
            if (originalState != null)
            {
                BinaryFormatter formatter = new BinaryFormatter();

                using (MemoryStream stream = new MemoryStream())
                {
                    stream.Write(originalState, 0, originalState.Length);
                    stream.Position = 0;
                    firmItem = this;
                    // восстанавливаемся
                    firmItem = (firm)formatter.Deserialize(stream);
                    originalState = null;
                }
            }
      }

Причина скорее всего в том, что сохранять и восстанавливать нужно не просто объект, а член списка - запроса (items), входящий в firm_localBindingSource.DataSource - IEnumerable<firm_local>. Но как это сделать не знаю.

Другие варианты - обновлять объект в существующей IEnumerable<firm_local>, но как это сделать? Да и удачный ли это вариант, если при отмене запрашивать данные?

Последний (самый дурацкий) вариант - при отмене обновлять запросом все данные.

Подскажите, неужели еще никто не работал с DataService?
...
Рейтинг: 0 / 0
Откат изменений при использовании DataService
    #36495524
vinvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, неужели DataService никто еще не пользует?
...
Рейтинг: 0 / 0
Откат изменений при использовании DataService
    #36495553
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinvin,

все уже написали свои аналоги этого dataservice :)

так что кому из них теперь нужен DS)

ты ж понимаешь, не токо в MS такие умные,чтобы писать DS. можно и самому написать.
...
Рейтинг: 0 / 0
Откат изменений при использовании DataService
    #36495637
vinvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я C# только недавно юзаю.
Думал вдруг буду изобретать велосипед, а он уже есть. Оказывается велосипеда нет :(
Что ж буду изобретать свой. Так, где тут мое колесо...
...
Рейтинг: 0 / 0
Откат изменений при использовании DataService
    #36495663
vinvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А все же, как заменить в IEnumerable<..> элемент.
Вот так не получается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// восстанавливаю объект из буфера   
frm_local.CancelEdit();
// frm_local после этого смотрит на восстановленный объет
frm_local = (firm_local) frm_local.firmItem;


//а здесь не идет, пишет  
// The left-hand side of an assignment must be a variable, property or indexer

(firm_localDataGridView.CurrentRow.DataBoundItem as firm_local) =
                        frm_local;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Откат изменений при использовании DataService
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]