我是C#的新手,来自ruby世界,ruby mongodb驱动程序为所有关于保存和更新的文档提供了created_at
和updated_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
。人们可以在每次保存文档时轻松设置它,但这不是很干。我希望复制另一种编程语言中存在的功能。
答案 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;
}
}
根据以下博客