Где инструкция о том, как объединить Caliburn.Micro MVVM с Entity Framework в приложении WPF? - PullRequest
3 голосов
/ 12 сентября 2011

Как я могу интегрировать Caliburn.Micro MVVM с Entity Framework для нового приложения WPF 4? Мне пока не повезло найти учебник. Я не планирую использовать Silverlight или RIA Services. Приложение (CRM для моей компании), вероятно, со временем будет расти. Я планирую использовать PRISM для модульности и надеюсь объединить три структуры.

Обратите внимание, что я не буду использовать EF Code First. EDM будет создан путем перетаскивания таблиц на поверхность конструктора для создания сущностей. Чтобы извлечь выгоду из Caliburn.Micro, я считаю, что все свойства сущностей необходимо будет обернуть, чтобы использовать NotifyOfPropertyChange. Если это так, я бы хотел найти какой-нибудь инструмент для генерации кода, который бы облегчил эту задачу. Возможно, мне нужно обернуть EF в хранилище? Если бы вы могли предложить ресурсы, которые помогут мне ответить на эти вопросы, это было бы очень полезно.

Спасибо!

Редактировать: я разместил связанный вопрос здесь .

Ответы [ 2 ]

3 голосов
/ 13 сентября 2011

Шаблон MVVM не заботится о методе доступа к данным, а метод доступа к данным не заботится о шаблоне MVVM. Для начала вы можете просто написать запросы в ваших моделях ViewModels, а затем реорганизовать их, используя шаблон репо.

По части PRISM и объединение 3 рамок. Призма действительно не нужна. Посмотрите пример HelloScreens, который входит в исходную загрузку Caliburn Micro. В клиентском проекте есть 3 подпапки / Клиент / Заказы и / Настройки. Они в основном модули и могут быть разделены на отдельные проекты. Здесь - сообщение на эту тему.

Мне нравится CM, но вы можете попробовать еще одну альтернативу - Lightswitch, поскольку это CRM компании.

редактирование: Найдите пример шаблона репозитория и EF, который вам нравится, и используйте его. Затем в ваших ViewModels и используя DI:

public class CustomerViewModel : Screen
{
     public IRepository CustomerRepo { get; set; }
     public CustomerViewModel(IRepository customerRepo)
     {
          Customer = customer
     }

     private BindableCollection<Customer> _customers;
     public BindableCollection<Customer> Customers
     {
         get { return _customers; }
         set
         {
             _customers = value;
             NotifyOfPropertyChange(() => Customers);
         }
     }

     protected override void OnActivate()
     {
          base.OnActivate();

          Customers = CustomerRepo.GetAll();
        }   
}
0 голосов
/ 24 декабря 2013

Здесь есть учебник . Я смог написать целое довольно сложное приложение именно из этого.

...