在.NET中为无架构数据库设计类是否有任何通用模式?

Mat*_*ols 8 c# schemaless nosql

我在C#中使用mongoDB做了一些工作,但我的所有代码仍处于开发阶段.我想知道人们在创建,更改和删除新属性时随着时间的推移发展其域类的有用模式.我很清楚,我需要对我所有存储的数据运行更新,或者确保我的域类知道如何处理旧的格式记录,但随着时间的推移,我可以想象如果一个类知道如何处理,这会变得混乱所有可能的表单格式.

我在想这个吗?这主要是使用良好的防御性编程吗?

Pri*_*Key 2

    \n
  1. 向数据对象添加新属性可能会更容易。您只需\n添加它们。除非您担心数据库中存在的对象的这些属性为空,否则您不需要执行任何操作。如果某些用户/计算机使用旧版本的应用程序,并且您的类标有 BsonIgnoreExtraElementsAttribute,他们甚至可能不需要更新其软件。
  2. \n
  3. 删除过时的属性可能会更容易。您\n只需将它们从您的班级中删除即可。如果您的类标有\nBsonIgnoreExtraElementsAttribute,那么您\xe2\x80\x99甚至不必在数据库中删除\n它们(例如,如果您的用户拥有多个版本的应用程序)。
  4. \n
  5. 重命名类属性也很容易。BsonElementAttribute 构造函数有一个参数,因此您可以将其映射到数据库中正确的属性名称。
  6. \n
  7. 更改属性类型可能需要您\n更新数据。但说真的,您在生产中多久将属性类型从 string 更改为 int ?
  8. \n
\n\n

因此,在许多情况下,您甚至不需要对数据运行更新(除非您更改数据类型或您的属性影响索引)。另一点是,添加 BsonIgnoreExtraElementsAttribute 通常是一个很好的做法,特别是如果您担心属性被频繁添加和/或删除。按照这种做法,您可以提供应用程序的旧版本和新版本来处理所有版本的记录,享受“无模式”的好处。

\n