你可以使用c#自动检索mongodb模型中的外部文档吗?

本文关键字:外部 文档 模型 可以使 自动检索 mongodb | 更新日期: 2023-09-27 18:18:45

我想设置我的mongo数据库poco模型,以便它们自动检索它们的外部文档,类似于EF和nhibernate的处理方式。

这是我到目前为止想出的解决方案,它有点笨拙,但这是我能做到的最好的:

基本模型:

    public class DocumentOwner
    {
        public virtual ObjectId OwnerID { get; set; }
    }

手动检索外文文档的扩展模型:

public class DocumentOwner
{
    public MongoDatabase DB { get; set; }
    public virtual ObjectId OwnerID { get; set; }
    public virtual Individual Owner
    {
        get
        {
            return this.DB.GetCollection<Individual>().FindOne(Query<Individual>.EQ(x => x.Id, this.OwnerID));
        }
    }

这个解决方案的主要问题是我必须手动注入mongo数据库实例,这非常笨拙,如果有一种方法可以使用ninject来注入这个实例,那将会整洁得多。甚至更好,如果我可以使用MongoDBRef来检索个人,而不必执行手动查询…

你可以使用c#自动检索mongodb模型中的外部文档吗?

您可能需要某种拥有MongoDatabase对象的存储库类,&让它将返回的文档插入到类中。保存更改可能会很尴尬,因为您需要将文档取出。如果是这样,那么在对象中使用Mongo类可能是正确的。无论哪种方式,存储库类都会有所帮助。

我将使用绑定到Func,类似于服务中的Func<MongoDatabase, DocumentOwner>来创建新实例。