Архитектурные проблемы NHibernate, WCF, WPF - PullRequest
1 голос
/ 15 марта 2011

Я хочу отобразить кучу разных объектов данных, которые я использую с помощью WPF. Эти объекты данных различаются в данных. У них есть общие свойства, но у них также есть некоторые отличающиеся свойства. Будет «мастер» класс, который ссылается на эти объекты. Каждый мастер-класс может иметь один из этих типов данных.

Мне сложно проектировать их даже на уровне базы данных. Должен ли я иметь одну таблицу для каждого объекта данных, что облегчает получение данных с помощью NHibernate (просто укажите одну из этих сущностей). Это делает его довольно трудным для использования с помощью WCF. Если я хочу отобразить эти данные в WPF, мне, вероятно, понадобится коллекция некоторого разнообразия, а этого у меня нет.

Я мог бы поместить все типы данных в одну и ту же таблицу и иметь уникальное ограничение в несколько столбцов для идентификатора владельца и идентификатора типа данных. Но тогда у меня могут быть нулевые свойства в моих сущностях, и это также будет трудно отобразить в пользовательском интерфейсе. Это также усложнит редактирование объектов, так как я должен помнить, какие свойства пользователь может и не может редактировать.

Полагаю, визуально сущности будут выглядеть следующим образом:

 public class Master
{
    int Id
    DataType1 Data1
    DataType2 Data2
}

public class DataType1
{
    int Id
    string SomeString
    string AnotherString
}

public class DataType2
{
    int Id
    string SomeString
    string DifferentString
}

А это вторым способом:

public class Master
    {
        int Id
        List<DataType> Types
    }

public class DataType
{
   int Id
   string SomeString
   string AnotherString
   string DifferentString
}

Так что будет лучшим способом? Или есть другой способ, который лучше, чем оба (возможно, есть)?

1 Ответ

0 голосов
/ 15 марта 2011

Это действительно зависит от вашего бизнеса, поскольку это не такая архитектурная проблема. Если вам известно число DataType-s, сделайте статическую (один к одному) ссылку (первый пример).

Если у вас есть неизвестный или динамический номер DataType-ов, у вас нет другого выбора, кроме как сделать эти DataType-ы списком в вашем «главном» объекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...