gpt4 book ai didi

c# - 我可以自动填充 MongoDB 中的 LastUpdated 字段吗(使用 C# 驱动程序)

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:53 26 4
gpt4 key购买 nike

我想在每次对该文档进行保存或更新操作时自动更新该文档上的 LastUpdatedOn 字段。

有没有某种方法可以自动执行此操作(我使用的是 C# 驱动程序),而不是将这种负担放在执行保存/更新的每一位代码上。

例如在 nHibernate 中你可以使用 interceptors .在数据库或驱动程序级别是否有类似的技术可用?

最佳答案

interceptors. Is there a similar technique available at either the database or driver level?

在 mongodb c# 驱动程序和 mongodb 中都没有这样的机制。为了满足您的需求,您可以简单地包装所有 SaveInsert、原子 Update 方法并在那里设置 LastUpdatedOn 字段。

例如,您可以为您的存储库、服务提供基类,无论您将在何处包装您的 Save 方法:

public abstract class BaseMongoService<T> where T : BaseDocument
{
protected abstract MongoCollection Items { get; }

public virtual SafeModeResult Save(T document)
{
document.LastUpdatedOn = DateTime.Now;

return Items.Save(document);
}
public virtual void Update(IMongoQuery query, IMongoUpdate update)
{
update = update.Set("LastUpdatedOn", DateTime.Now);
Items.Update(query, update);
}
}

那么您需要从 BaseDocument 继承所有文档(或强制它们实现某些接口(interface))以添加所有文档都应包含 LastUpdatedOn 字段的约束。

public class BaseDocument
{
public DateTime LastUpdatedOn {get;set;}
}

然后只需继承上面的所有数据访问类,并使用基类的 Save、Update 方法。

注意:所有这些代码都没有经过测试,这只是我认为可以完成的方式。

关于c# - 我可以自动填充 MongoDB 中的 LastUpdated 字段吗(使用 C# 驱动程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9111232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com