使用MongoDB以IQueryable检索查询

问题描述 投票:0回答:1

我正在更新一个旧项目,该项目将数据库层实现为接口,因此添加新的数据库选项更加容易。我目前正在尝试向其添加MongoDB实现,但遇到了一些麻烦。

该项目有一个名为IDataQuery的接口,该接口派生自LINQ.IQueryable接口:

public interface IDataQuery<out T> : IQueryable<T>
{
}

它也有一个称为IDataSession的接口,它具有返回此类型QueryIDataQuery方法:

public interface IDataSession : IDisposable
{
    IDataQuery<T> Query<T>() where T : class, IDataEntity;
}

我创建了一个名为MongoDataSession的类,该类派生自该接口并实现Query方法,如下所示:

public class MongoDataSession : IDataSession
{
    private IMongoDatabase m_database;

    public MongoDataSession(IMongoDatabase database)
    {
        m_database = database;
    }

    public IDataQuery<T> Query<T>() where T : class, IDataEntity
    {
        var collection = m_database.GetCollection<T>("test");

        return collection.AsQueryable<T>();
    }

    public void Dispose()
    {
        // TODO.
    }
}

但是,MongoDB AsQueryable方法将结果返回为IMongoQueryable。我试图将其强制转换为IDataQuery<T>,但这没有用。

c# mongodb iqueryable
1个回答
0
投票

已解决。我围绕IDataQuery创建了一个包装器,并将其强制转换为该包装器。

© www.soinside.com 2019 - 2024. All rights reserved.