2011-03-15 30 views
1

我想顯示一堆我使用WPF的不同數據對象。這些數據對象在數據中不同。他們有共同的屬性,但他們也有一些不同的屬性。將會有一個引用這些實體的「主」類。每個主類都可以具有其中的每種數據類型。NHibernate,WCF,WPF架構問題

即使在數據庫級別,我也很難設計它們。我應該爲每個數據對象創建一個表,從而可以輕鬆地使用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 
} 

那麼這將是最好的方式?或者有沒有比這兩種方式更好的方法(可能有)?

+0

這真的取決於很多東西: 1.什麼DataTypes代表?你需要 2.不同的數據類型? Master是否有1,2(最大)或多個(未知)數量的DataType對象? 3.它看起來像Id和SomeString在數據類型中很常見,可以將它們放在基類中?並從該基類繼承? 4.在第二個設計中,DataType AnotherString和DifferentString總會有一個值嗎? – 2012-04-26 20:47:34

回答

0

這實際上取決於您的業務案例,因爲它不是這樣的架構問題。如果已知數量的DataType-s,則執行靜態(一對一)引用(第一個示例)。

如果您具有未知或動態數量的DataType-s,則除了將這些DataType-s作爲「主」對象中的列表外,沒有別的選擇。

+0

到目前爲止,這是一個靜態數字,但有可能會有更多的下線。如果他們是靜態的,我將如何在WPF中顯示它們? – Harry 2011-03-15 12:51:33

+0

那麼這是另一種情況,我已經知道他們中有更多的人。你必須仔細考慮你正在解決的商業案例,這是最重要的。如何在WPF中顯示一對一的關係對象?爲什麼會是這個問題?您可以使用一個一個顯示控件...我想將它們顯示在網格中,這是另一個指標,您可能需要一對多關係對您的主控對象。 – 2011-03-15 12:58:07

+0

我打算使用容器控件,是的。但考慮一下,我想這不是必須的。 – Harry 2011-03-15 13:09:20