2012-02-20 97 views
2

我想允許用戶創建自己的實體,例如: - 學生(姓名,年齡,學校,照片等) - 動物(姓名,類型,國家等) ) - 汽車(品牌,顏色,價格等) 等應用程序的類結構和數據庫結構

然後用戶將能夠根據創建的實體在數據庫中添加記錄。

所有的屬性都是字符串。

我的問題是如何在數據庫中最好地保存這些實體的實例。 爲每個創建的實體創建一個新表,我認爲是不可能的。 我在考慮在表中保存創建的每個實體的屬性,然後在另一個表中實例化這些實體,這些屬性將以逗號分隔,例如:

實體結構表(學生):

property_name entity_key 

name    student 
age    student 
school   student 
photo   student 

實體實例表:

instance    entity_key 

joe,19,nyhigh,joe.jpg student 

怎麼樣與我會創造這些記錄實例的類? (?自動生成的類?)(?一個具有List屬性的類,我將在其中分隔'joe,12,nyhigh,joe.jpg'字符串?) 有沒有人遇到過這種類型的問題?

我將在asp.net C#中開發應用程序。

+0

問問你自己,如果數據在數據庫中,你會怎麼做?一般來說,不要在逗號分隔值中存儲數據庫 – Randy 2012-02-20 20:34:15

+0

首先,這是一項家庭作業嗎?您還想要保存字符串的所有屬性? – 2012-02-20 20:35:25

+0

不,它沒有作業:)是的,他們的琴絃 – hhh3112 2012-02-20 20:36:08

回答

1

將實體序列化並將其保存在實例列中。如果您需要針對這些值執行數據庫查詢,請使用XML序列化。

public static string SerializeToString(object obj) 
{ 
    using (var serializer = new XmlSerializer(obj.GetType())) 
    using (var writer = new StringWriter()) 
    { 
     serializer.Serialize(writer, obj); 
     return writer.ToString(); 
    } 
} 
0

你可以做一個實體類型表和實體屬性表,並涉及他們兩個在一起。如果你的所有屬性都是字符串。如果他們不是,你也可以在實體屬性表中存儲類型。

0

您將需要創建一個名稱值對錶,並將它指向一個student表

學生

ID INT
名字爲nvarchar(50)
姓氏爲nvarchar(50)

NameValue

ID int PK
Name nvarchar(50)
StudentID INT FK
價值爲nvarchar(50)

,你會發現quering數據庫將變成一個真正的麻煩,你需要的一切轉動了它。但是,如果你的每個對象都是真正獨特的,那麼pivoting將無濟於事。