MongoDB Bson独特的映射器序列化器

时间:2018-03-26 13:48:56

标签: mongodb .net-core bson

使用mongodb3.6和.NetCore2.0,遵循 mongo-csharp-driver2.5文档

我想为某些字段添加Bson唯一的地图序列化程序。就像在这里:

public class UserAccount : Person
{
    [Required]
    [**i want this to be unique also, like i set it required**] 
    public string Username { get; set; }
    public string UserCode { get; set; }
}

我在文档中搜索它,也谷歌搜索它,但没有在C#中找到任何帮助(关于映射条款)。

1 个答案:

答案 0 :(得分:1)

自定义序列化程序(检查Required属性是否已填充)可以通过检查模型在客户端执行其工作。但是,检查文档属性的值是否唯一需要向数据库请求,该数据库将搜索具有此类属性值的文档。它会破坏模型序列化的性能,特别是如果请求的字段没有在MongoDB中编入索引。

这就是为什么我认为你不应该在模型序列化期间检查属性的唯一性。在文档插入尝试期间,应在MongoDB服务器端检查它。 MongoDB提供了Unique Indexes开箱即用的功能。您应该做的唯一事情是在相应的属性上创建一个唯一索引:

db.userAccounts.createIndex( { "UserName": 1 }, { unique: true } )

现在,如果您尝试插入具有重复属性值的文档,则会出现以下异常:

enter image description here