2010-11-08 29 views
2

我正在用MongoDB和NoRM在C#中進行實驗。Mongodb NoRM和POCO

從我讀過的唯一標識Mongodb中文檔的ObjectId來看,它是一種「特殊」的Guid(從某種意義上說是唯一的),但其中有一些重要的部分,允許更簡單的排序和索引(時間戳,機器哈希,processId和增量)。

我想繼續我的對象真的POCO與自動生成的GUID作爲ID,以便在沒有外部類型如的ObjectId會阻止我遷移到另一種技術或者回到經典Ado.net或NHibernate的東西。

另一種選擇是在POCO的標識使用string和使用ObjectId.NewObjectId().ToString()

什麼是它的最佳實踐?

+0

爲什麼你會使用NoRM,它在幾年內還沒有更新,並說「不要使用這個,使用官方驅動程序」。 – 2016-07-09 04:58:22

回答

2

ObjectId不是guid。 Guid是MS爲他們使用的UUID版本提供的名稱。 ObjectIds是一種完全不同的算法。

話雖這麼說,你可以使用任何你喜歡的,如蒙戈的ID,它不會有性能損失(在軌世界,幾個奧姆斯的提倡用字符串)

的ObjectId使用在mongo中主要是爲了節省大小。如果這是一筆大交易,只需使用別的東西,只要意識到使用不必要的大ID域最終會浪費內存。但如果這是一件大事,那就去Guids吧。

0

你可以使用任何你喜歡的類型作爲_id,正如Matt所說的那樣,它提供了它獨特的集合。

在[DOC:BSON]類型中存儲UUID是最有效的,但如果空間和速度不是問題,您也可以使用十六進制字符串。