Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
 WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
megazoid007
Member

Откуда:
Сообщений: 225
Проверял что после изменения в гриде данные так же менялись и в ObservableCollection во ViewModel, однако после подключения к ДБ и вызова db.SaveChanges() данные не сохраняются вот ViewModel:
public class MeasurementWindowViewModel: ViewModelBase
    {
        ServiceDAL _db;
        public ObservableCollection<Measurement> ItemsList
        { get; private set; }
        public RelayCommand _saveCommand;
        public MeasurementWindowViewModel()
        {
            _db = new ServiceDAL();
            ItemsList = new ObservableCollection<Measurement>(_db.GetAllMeasurement());
        }
        public RelayCommand SaveCommand
        {
            get
            {
                return _saveCommand ?? (_saveCommand = new RelayCommand(this.SaveItems));
            }
        }

        private void SaveItems(object obj)
        {
            _db.Save();
        }
    } 


Вот метод сохранения:
public void Save()
        {
            using (var db = new ServiceContainer())
            {
                db.SaveChanges();
            }
        }


Вот привязка к гриду:
<DataGrid Grid.Row="0" ItemsSource="{Binding ItemsList}" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="№" Binding="{Binding Path = Id, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
                <DataGridTextColumn Header="Название" Binding="{Binding Path = Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
            </DataGrid.Columns>
</DataGrid>
10 мар 14, 17:44    [15699737]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
Monochromatique
Member [заблокирован]

Откуда:
Сообщений: 1936
Если попроще, то...


Вот метод сохранения:

public void Save()
{

_db.SaveChanges();

}
10 мар 14, 20:17    [15700399]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
Monochromatique
Member [заблокирован]

Откуда:
Сообщений: 1936
Мил. чел., удовлетвори любопытство - в рамках чего у тебя такая задача стоит?
10 мар 14, 20:18    [15700408]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
megazoid007
Member

Откуда:
Сообщений: 225
Monochromatique, скажем так я новичок в wpf - mvvm, на работе попросили написать прогу что то типо книги покупок, ну и вот застрял на первом же окне, дабы не плодить разных диалоговых окон решил замутить редактирование и добавление прямо в гриде, в частности данное окно это окно редактирования единиц измерения
10 мар 14, 20:41    [15700488]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
megazoid007
Member

Откуда:
Сообщений: 225
Monochromatique, вот пример из книги:
using (PEF context = new PEF())
{
  var contact = context.Contacts.First();
  contact.FirstName = "Julia";
  contact.ModifiedDate = DateTime.Now;
  context.SaveChanges();
}

а вот я выгружаю набор объектов:
public IList<Measurement> GetAllMeasurement()
        {
            IList<Measurement> result;
            using (var db = new ServiceContainer())
            {
                result = db.MeasurementSet.ToList(); 
            }
            return result;
        }

т.е. по существу тоже самое, выбрали, изменили и сохранили, но увы почему то не пашет.
10 мар 14, 21:16    [15700630]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
Monochromatique
Member [заблокирован]

Откуда:
Сообщений: 1936
megazoid007
замутить редактирование и добавление прямо в гриде


Рука-лицо.

Короче - я тебе во втором посте написал. И WPF/MVVM тут не причем.

По твоему примеру - у тебя контекст отслеживает объекты, которые ты создаешь/грузишь с его помощью.
И в примере из книги это видно.

А ты - уничтожаешь контекст, а потом создаешь новый. А новый ничего не знает, что ты там что то изменил.

Вот это:

using (PEF context = new PEF())
{
  var contact = context.Contacts.First();
  contact.FirstName = "Julia";
  contact.ModifiedDate = DateTime.Now;
}

using (PEF context = new PEF())
{
  context.SaveChanges();
}


эквивалетно тому, что пытаешься сделать ты.
10 мар 14, 22:44    [15701070]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
megazoid007
Member

Откуда:
Сообщений: 225
Monochromatique, принимается ))), тогда есть какие то варианты выхода из этой ситуации ?
11 мар 14, 09:33    [15702339]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
megazoid007
Member

Откуда:
Сообщений: 225
Как можно добавить во вновь созданный контекст ранее созданные объекты, с сохранением свойства State ну там Editted Deleted и пр. ?
11 мар 14, 10:57    [15702701]     Ответить | Цитировать Сообщить модератору
 Re: WPF + MVVM + EF как сохранить данные отредактированные в DataGrid ?  [new]
megazoid007
Member

Откуда:
Сообщений: 225
Monochromatique, чет сразу затупил надо было убрать все using, как рас то про что вы говорили, так то все сохраняет:
class ServiceDAL
    {
        private ServiceContainer db;
        public ServiceDAL()
        {
            db = new ServiceContainer();
        }        
        public IList<Measurement> GetAllMeasurement()
        {
            return db.MeasurementSet.ToList();
        }

        public void Save()
        {
            db.SaveChanges();
        }
    }


Однако теперь архитектурный вопрос, если я не уничтожаю контекст сохраняется ли подключение к базе данных, ли оно открывается и закрывается только в момент выборки, и как быть если ViewModel - ов много то естественно под каждый ViewModel создавать DAL класс как то не рационально, как в таком случае поступают стандартно ?
11 мар 14, 11:47    [15703159]     Ответить | Цитировать Сообщить модератору
Все форумы / WPF, Silverlight Ответить