gpt4 book ai didi

c# - 在 .NET 中是否有用于设计无模式数据库类的通用模式?

转载 作者:太空狗 更新时间:2023-10-29 19:46:07 31 4
gpt4 key购买 nike

我已经在 C# 中使用 mongoDB 完成了一些工作,但我的所有代码仍在开发中。我想知道人们在随着时间的推移随着新属性的创建、更改和删除而发展他们的域类时发现了哪些有用的模式。我很清楚,我将需要对我所有存储的数据运行更新,或者确保我的领域类知道如何处理旧格式记录,但随着时间的推移,我可以想象如果一个类知道如何处理,这会变得困惑所有可能的表单格式。

我是不是想多了?这主要只是使用良好的防御性编程的情况吗?

最佳答案

  1. 向数据对象添加新属性再简单不过了。你刚才添加它们。除非您担心这些属性对于数据库中存在的对象,您无需执行任何操作别的。如果某些用户/机器使用您的旧版本应用程序和你的类(class)被标记为BsonIgnoreExtraElementsAttribute,它们甚至可能不需要更新他们的软件。
  2. 删除过时的属性再简单不过了。你只需在您的类(class)中删除它们即可。如果你的类(class)标有BsonIgnoreExtraElementsAttribute,那么你甚至不必删除它们在您的数据库中(例如,如果您的用户有多个您的应用程序的版本)。
  3. 重命名类属性也很容易。 BsonElementAttribute 构造函数有一个参数,因此您可以将它映射到数据库中正确的属性名称。
  4. 更改属性类型可能需要您对您的数据。但说真的,你多久改变一次属性(property)类型在生产中将字符串转换为 int?

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

关于c# - 在 .NET 中是否有用于设计无模式数据库类的通用模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593559/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com