首页 > 解决方案 > .Net 核心与 Mongodb

问题描述

我是 mongodb 的新手,我正在尝试使用 mongodb shell 将数据插入到我的集合中

用户.cs

public class User

{

    [BsonId]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }

    [BsonElement("userName")]
    public string? UserName { get; set; }

    [BsonElement("workDay")]
    public IEnumerable<WorkDay>? WorkDay { get; set; }

    [BsonElement("emailAddress")]
    public string? EmailAddress { get; set; }

    [BsonElement("sendEventsOutsideWorkHours")]
    public bool? SendEventsOutsideWorkHours { get; set; }

    [BsonElement("sendReportOutsideWorkHours")]
    public bool? SendReportsOutsideWorkHours { get; set; }

    [BsonElement("timeZoneOffset")]
    public int? TimeZoneOffset { get; set; }
}

工作日.cs

public class WorkDay

    [BsonElement("dayOfWeek")]
    public DayOfWeek DayOfWeek { get; set; }


    [BsonElement("startTime")]
    public WorkDayBoundary _StartTime { get; set; }
    public TimeSpan StartTime
    {
        get
        {
            return new TimeSpan(_StartTime.Hours, _StartTime.Minutes, 0);
        }
    }

    [BsonElement("endTime")]
    public WorkDayBoundary _EndTime { get; set; }
    public TimeSpan EndTime
    {
        get
        {
            return new TimeSpan(_EndTime.Hours, _EndTime.Minutes, 0);
        }
    }
}

public class WorkDayBoundary
{
    [BsonElement("hours")]
    public int Hours { get; set; }

    [BsonElement("minutes")]
    public int Minutes { get; set; }
}

这是我在 mongodb shell 中的代码

db.Users.insertMany([{
    'userName': 'Testing123',
    'workDay': {
        'dayOfWeek': 0,
        'startTime': { 'hours': 5, 'minutes': 23 },
        'endTime': { 'hours': 5, 'minutes': 23 }
    },
    'emailAddress': 'thisismymail@email.com',
    'sendEventsOutsideWorkHours': 1,
    'sendReportOutsideWorkHours': 1,
    'timeZoneOffset': 5.00
},
{
    'userName': 'Something999',
    'workDay': {
        'dayOfWeek': 1,
        'startTime': { 'hours': 1, 'minutes': 55 },
        'endTime': { 'hours': 10, 'minutes': 33 }
    },
    'emailAddress': 'somethingas@email@email.com',
    'sendEventsOutsideWorkHours': 0,
    'sendReportOutsideWorkHours': 0,
    'timeZoneOffset': 2.00
}
])

并且在执行.netcore application时抛出异常

 "FormatException: Cannot deserialize a 'List<WorkDay>' from BsonType 'Document'."

标签: mongodbasp.net-core-3.0

解决方案


推荐阅读