C# NHibernate、WCF、WPF架构问题

C# NHibernate、WCF、WPF架构问题,c#,wpf,wcf,nhibernate,C#,Wpf,Wcf,Nhibernate,我想显示一组使用WPF的不同数据对象。这些数据对象在数据上各不相同。它们有共同的属性,但也有一些不同的属性。将有一个引用这些实体的“master”类。每个主类可以有其中一种数据类型 我发现即使在数据库级别上也很难设计它们。我是否应该为每个数据对象提供一个表,从而使使用NHibernate(仅引用其中一个实体)获取数据变得容易。这使得使用WCF进行消费变得相当困难。如果我想在WPF中显示这些数据,我可能需要一些种类的集合,而这正是我所没有的 我可以将所有数据类型放在同一个表中,并且对所有者id和数

我想显示一组使用WPF的不同数据对象。这些数据对象在数据上各不相同。它们有共同的属性,但也有一些不同的属性。将有一个引用这些实体的“master”类。每个主类可以有其中一种数据类型

我发现即使在数据库级别上也很难设计它们。我是否应该为每个数据对象提供一个表,从而使使用NHibernate(仅引用其中一个实体)获取数据变得容易。这使得使用WCF进行消费变得相当困难。如果我想在WPF中显示这些数据,我可能需要一些种类的集合,而这正是我所没有的

我可以将所有数据类型放在同一个表中,并且对所有者id和数据类型id有一个多列唯一约束。但是,我的实体中可能有空属性,并且在UI中也很难显示。这也会使编辑实体变得复杂,因为我必须注意用户可以编辑和不能编辑哪些属性

我猜,从视觉上看,实体在第一种方式中看起来是这样的:

 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
}
公共类主控
{
整数Id
列表类型
}
公共类数据类型
{
整数Id
串
串另一串
字符串差异字符串
}

那么,哪种方式最好?还是有一种不同的方式比两者都好(可能有)?

这实际上取决于您的业务案例,因为这不是一个架构问题。如果您知道数据类型的数量,请执行静态(一对一)引用(第一个示例)


如果您有未知或动态的数据类型编号,则除了将这些数据类型作为“主”对象中的列表外,别无选择。

到目前为止,它是一个静态编号,但可能会有更多。如果它们是静态的,我将如何在WPF中显示它们呢?这是另一种情况,我想你已经知道,在这条线上还有更多的。。你必须仔细考虑你正在解决的商业案例,这是最重要的。如何在WPF中显示一个关系对象?为什么这会是一个问题?您可以使用一个显示控件。。。我想在网格中显示它们,这是另一个指标,在主对象上可能需要一对多关系。我计划使用容器控件,是的。但仔细想想,我想不一定非得如此。这真的取决于很多事情:1。数据类型代表什么?你需要两个吗。不同的数据类型?Master是否有1,2(最大)个或多个(uknown)个数据类型对象?3.看起来Id和SomeString在数据类型中很常见,是否可以将它们放在基类中?从那个基类继承?4.在第二种设计中,数据类型另一个字符串和DifferentString是否总是有值?