2009-11-06 1 views
2

Я совершенно не знаком с WPF, поэтому я трачу время на трафик в Интернете для примеров и руководств по тому, как это должно быть сделано. Я пришел к выводу, что путь вперед - попытаться использовать шаблон MVVM в качестве руководства для моей структуры приложения. Я полностью согласен с теорией, если не с моими техническими способностями. У меня есть один или два вопроса, и надеюсь, что вы, возможно, можете указать мне в правильном направлении по нескольким вопросам, касающимся дизайна приложения.WPF, консультация по дизайну приложений и параллелизм базы данных

  1. Я хочу сохранить список клиентов. Я видел несколько примеров этого. Они включают загрузку репозитория Customers, содержащего список объектов Customer. Создается соответствующая View и ViewModel для Клиентов. Когда пользователь выбирает Заказчика для редактирования, для объекта Customer в коллекции Customers создается объект View и ViewModel. Это позволяет синхронизировать все изменения при внесении изменений. Мой вопрос: моя модель клиента очень сложная, она содержит основную информацию о клиенте, имя, адрес и т. Д., А также атрибуты о клиенте, списки категорий, профили продуктов, целевые бюджеты и т. Д. Я хочу, чтобы они были доступны для редактирования в Клиенте Просмотрите, но не хотите накладных расходов на их загрузку в репозиторий Клиентов. Я хочу только загрузить расширенную информацию о клиенте, если это необходимо, но обновить представление Клиента с изменениями. Каков наилучший способ достичь этого?

  2. Мой второй вопрос: если я разделяю информацию Клиента по нескольким вкладкам, должен ли я иметь отдельный View и ViewModel для каждой вкладки или иметь один вид. Какая практика?

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

  4. Любые предложения по обработке проблем параллелизма базы данных. Если другой пользователь редактирует или удаляет Клиента, который я сейчас редактирую, что должно произойти, когда я попытаюсь сохранить его? Я знаком с Datasets и ADO.net и обрабатываю любые ошибки параллелизма, возникающие при использовании DataAdapter, есть ли подобный метод с Linq to SQL?

Я ценю, что здесь есть много неопределенных вопросов. Но я был бы признателен за любые рекомендации.

С уважением Тим

ответ

1

Я скажу вам свое мнение, но вы должны сформировать у вас есть мнение.

Мне очень не нравятся образцы, потому что они много работают только для одного объекта (клиентов). У меня много объектов в моем приложении, поэтому я закончил разработку кода и использовал больше наследования.

Образцы нуждаются в проверке на реальность. Например, в примере с MVVM Josh Smith, если вы меняете клиента, это изменение распространяется на список и другие места, это хорошо в примере, но если у вас есть бизнес-приложение, вы не хотите распространять изменяется, если пользователь не нажал «Сохранить» и все бизнес-правила, применяемые к объекту.

Я также не покупаю в чистом MVVM, где за то, что запрещено помещать что-либо в код позади, и у вас должно быть code lots of lines only for a double-click, приходите на людей, это простой двойной щелчок.

На вас вопрос:

  1. Реализовать ленивый список нагрузки (see Rob Connery post)
  2. ИМО, один вид.
  3. Необходимо перезагрузить. Добавьте кнопку обновления в список и дайте возможность решить, когда нужно обновить.
  4. Pass
+0

Eduardo, Большое спасибо за ваше мнение. Я полностью согласен с вашими комментариями. Образцы очень полезны, и я чрезвычайно благодарен всем, кто делает время, чтобы представить их. Мне просто жаль, что я не могу найти то, что объясняет, как делать вещи в реальном мире, сложное приложение. Я сделал код, просто указатель в правильном направлении. – Tim

1

Я открытым исходным кодом в sample framework called SoapBox Core для выполнения WPF с MVVM (а также делает его расширяемой с помощью MEF). Если вы проигнорируете часть MEF, есть несколько хороших идей о том, как делать то, о чем вы говорите. Я бы особенно посмотрел, как работает диалог параметров, потому что это касается проблемы, о которой указывает Эдуардо (как вы решаете что-то редактировать, но публикуете результаты только в том случае, если пользователь совершает изменение). В этом случае он использует пользовательские настройки в .NET в качестве хранилища резервных копий, но он может использовать все, что угодно, например сущности.

+0

Большое спасибо, я скачаю сейчас и проверю его. С уважением – Tim

Смежные вопросы