我想使用WPF显示一堆不同的数据对象。这些数据对象的数据不同。它们具有共同的属性,但它们也具有一些不同的属性。将有一个引用这些实体的“主”类。每个主类可以具有这些数据类型中的每一种。
我发现即使在数据库级别也很难设计它们。我应该为每个数据对象配备一个表,从而可以使用NHibernate轻松获取数据(只需参考其中一个实体)。这使得使用WCF消费非常困难。如果我想在WPF中显示这些数据,我可能需要一些变化的集合,这就是我没有的。
我可以将所有数据类型放在同一个表中,并对所有者ID和数据类型id具有多列唯一约束。但是我的实体中可能有null属性,并且在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
}
那么哪种方式最好?还是有不同的方式比两者都好(可能有)?
答案 0 :(得分:0)
这实际上取决于您的业务案例,因为它不是一个架构问题。如果已知数量的DataType-s执行静态(一对一)引用(第一个示例)。
如果您有未知或动态数量的DataType-s,除了将这些DataType-s作为“Master”对象中的列表之外别无选择。