如何使用 BsonClassMap 配置对象 ID 数组的表示形式

本文关键字:表示 数组 ID 何使用 BsonClassMap 配置 对象 | 更新日期: 2023-09-27 17:56:04

请考虑以下 C# 类:

public class Role
{
    public string Id { get; set; }
    public IEnumerable<string> Users { get; set; }
}

如何配置用户使用 BsonClassMap.RegisterClassMap<Role> 映射到 MongoDB 中的 ObjectId 数组?我能够配置标量属性 Id 映射到 ObjectId,但无法弄清楚如何对序列(数组)执行相同的操作:

BsonClassMap.RegisterClassMap<Role>(m =>
    {
        m.MapIdProperty(r => r.Id).SetRepresentation(BsonType.ObjectId);
        // How do I map r.Users to an array of ObjectId??
        m.MapProperty(r => r.Users);
     });

如何使用 BsonClassMap 配置对象 ID 数组的表示形式

答案是使用正确初始化的ArraySerializationOptions对象调用SetSerializationOptions

BsonClassMap.RegisterClassMap<Role>(m =>
    {
        m.MapIdProperty(r => r.Id).SetRepresentation(BsonType.ObjectId);
        m.MapProperty(r => r.Users).SetSerializationOptions(
                new ArraySerializationOptions(new
                        RepresentationSerializationOptions(BsonType.ObjectId)));
     });