将旧字段名称和新字段名称从mongodb文档映射到同一c#字段

时间:2016-10-03 17:04:10

标签: mongodb-.net-driver

MongoDB C#驱动程序是否能够将两个字段名称从服务器映射到C#类中的单个字段?

我们需要这样做的原因是我们已经在代码中重命名了一个字段,并希望在一段时间内同时支持旧字段名称和新字段名称。

这是一个典型的数据迁移场景,如果我们可以通过映射建立一个模式,而不必将特殊版本逻辑添加到数据实体类或逻辑代码,那将非常有用。

我们目前正在使用官方c#驱动程序v2.3和服务器v3.2。

1 个答案:

答案 0 :(得分:1)

我认为这是非常可能的。你能做的是

  1. 创建一个未保存在bson中的新属性。这样使用BsonIgnore标记并填充您的两个属性中的数据,并在您提供的JSON响应中公开该数据。使用JsonIgnore确保在那里提供正确的忽略指令。

  2. 在Mongodb中寻找迁移技术。您可以使用this one之类的迁移工具。当您使用C#驱动程序2.3.0时,我认为您希望使用它,并且您可以使用我的fork here来实现C#驱动程序2.3.0兼容性。

  3. 数字1的代码示例:

    class Data
    {
        [JsonIgnore]
        public string OldProperty { get; set; }
    
        public string NewProperty
        {
            get
            {
                // Return this one or the old one based on your logic 
            }
            set;
        }
    }