C#用於麪包店鏈的項目,用於記錄包括配料和實際配方等在內的所有產品。似乎對於像我這樣的人完成了大量SQL而言,自由形式有點過分。我腦海中浮現了MongoDB。 啓動了典型的Type,數據庫接口和Repository類,然後我意識到我習慣於將所有內容映射到Type類中以定義每個屬性/列。我選擇MongoDB的原因是無法確定究竟有多少列。有時候他們會按照一定的順序和項目寫下書籍,而其他時間他們只是隨意寫成完全自由的形式。在Type中預先定義它們是不可能的。當然,解決方法是組成20個屬性/列,因爲它們永遠不會使用這麼多。我知道MongoDB也有架構。但是,這種方式只能回溯到通常的固定模式SQL。如何爲MongoDB定義類型
如果MongoDB的仍然是數據庫的選擇,C#可能有鍵入以下選項:
- 捕捉一切成一個大的字符串(品牌和配方)
Bakery{
int UserId,
string UserName,
Datetime makeTime,
string make,
string recipe
}
- 有點更有條理,缺點是它不能處理非對收集,例如水平3+字段。
Bakery{
int UserId,
string UserName,
Datetime makeTime,
iCollection<make> makes,
iCollection<recipe> recipes
}
public class make
{
string fieldName,
string actualValue
}
public class recipe
{
string ingredientName,
string dose
}
- 預定義多達每行/文件20個字段,我寧願回去SQL。
Bakery{
int UserId,
string UserName,
Datetime makeTime,
iCollection<make> makes,
iCollection<recipe> recipes
}
public class make
{
string fieldName1, string actualValue1,
...
string fieldName20, string actualValue20
}
public class recipe
{
string ingredientName1, string dose1,
...
string ingredientName20, string dose20
}
必須能夠存在,如果要查詢的項目和值。需要一些專家的意見。謝謝。
據我瞭解mongoDb的東西,你使用你的第三部分,而不是使用fieldname1 - fieldname20只是使用另一個列表。因爲它像JSON-Objects一樣保存得很多,所以您不會在行和列方案中綁定到2維對象。如果您的課程由一個列表組成,其中每個字段由字段和值成員組成,則可以將靈活數量的字段存儲到數據庫中。 –
Sebi
@塞比好點。關鍵是讓它垂直而不是水平。我如何處理相關但不成對的事物?例如,配方,劑量和溫度。 – Jeb50
我會考慮它完全面向對象。建立一個不錯的C#對象結構。稍後你將它序列化爲mongodb。但這只是我的觀點,我從來沒有嘗試過。爲了保持關係,您需要存儲我認爲的Mongo文檔的Id字段。 https://docs.mongodb.com/ecosystem/drivers/csharp/ – Sebi