Получить запрос как IQueryable, используя MongoDB - PullRequest
0 голосов
/ 21 марта 2020

Я обновляю старый проект, в котором слой базы данных реализован в виде интерфейсов, поэтому проще добавить новую опцию базы данных. В настоящее время я пытаюсь добавить к нему реализацию MongoDB, и у меня возникли некоторые проблемы.

Проект имеет интерфейс под названием IDataQuery, который происходит от интерфейса LINQ.IQueryable:

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

Он также имеет интерфакс c, называемый IDataSession, который имеет метод Query, который возвращает этот тип IDataQuery:

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>, но это не сработало.

1 Ответ

0 голосов
/ 21 марта 2020

решаемая. Я создал обертку вокруг IDataQuery и произнес ее.

...