设置默认的DateTime.Now值以在保存文档时保存到MongoDB

时间:2018-02-17 06:17:02

标签: c# mongodb

我是C#的新手,来自ruby世界,ruby mongodb驱动程序为所有关于保存和更新的文档提供了created_atupdated_at字段。不幸的是,在网上搜索后,似乎这在c#中很常见。

我想知道在保留文件时如何将文档CreatedAt字段默认为Time.Now

using System;
using System.Collections.Generic;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using MongoDB.Driver;

namespace MongoDBConsole
{
    class Program
    {
        public static void Main(string[] args)
        {
            var client = new MongoClient("mongodb://localhost:27017");
            var database = client.GetDatabase("mongodb_console");
            var collection = database.GetCollection<Person>("person");
            var person = new Person
            {
                Name = "John Doe",
                Age = 25
            };
            collection.InsertOne(person);

        }
    }

    class Person
    {
        public string Name { get; set; }
        [BsonIgnoreIfNull]
         public int? Age { get; set; }
        [BsonDefaultValue(DateTime.Now)] // <-- this errors out
        private DateTime CreatedAt { get; set; }
    }
}

编辑:

我提出问题的目的是防止自己每次实例化一个新的CreatedAt类对象时都必须添加Person字段。每当CreatedAt类持久保存到MongoDB时,都应自动设置Person。人们可以在每次保存文档时轻松设置它,但这不是很干。我希望复制另一种编程语言中存在的功能。

2 个答案:

答案 0 :(得分:1)

以下代码对您有所帮助,

var person = new Person
            {
                Name = "John Doe",
                Age = 25,
                CreatedAt = DateTime.Now
            };

CreatedAt属性设置为DateTime.Now

答案 1 :(得分:0)

今天遇到了这个,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MongoDB.Bson.Serialization.Attributes;

namespace NotebookAppApi.Models
{
    public class Note
    {
        [BsonId]
        public string Id { get; set; }
        public string Body { get; set; } = string.Empty;
        public DateTime UpdatedOn { get; set; } = DateTime.Now;
        public DateTime CreatedOn { get; set; } = DateTime.Now;
        public int UserId { get; set; } = 0;
    }
}

根据以下博客

Using MongoDB .NET Driver with .NET Core WebAPI