Используйте тот же синтаксис для MongoDB и SQL с C # или Linq - PullRequest
5 голосов
/ 17 апреля 2019

Заметил, что MongoDB имеет разные ключевые слова, такие как InsertOne, ReplaceOne и т. Д. Суть Linq (Language Integrated Query) заключалась в том, чтобы иметь универсальный язык, в котором люди могут использовать внедрение зависимостей и переключаться между SQL или NoSQL без значительного изменения синтаксиса.SQL использует .Add () и Remove ().

Есть ли простой способ сделать так, чтобы они имели одинаковый синтаксис?

SQL:

https://docs.microsoft.com/en-us/ef/core/saving/basic

MongoDB:

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mongo-app?view=aspnetcore-2.2&tabs=visual-studio

https://docs.mongodb.com/manual/reference/method/db.collection.insertOne/

public BookService(IConfiguration config)
    {
        var client = new MongoClient(config.GetConnectionString("BookstoreDb"));
        var database = client.GetDatabase("BookstoreDb");
        _books = database.GetCollection<Book>("Books");
    }

    public List<Book> Get()
    {
        return _books.Find(book => true).ToList();
    }

    public Book Get(string id)
    {
        return _books.Find<Book>(book => book.Id == id).FirstOrDefault();
    }

    public Book Create(Book book)
    {
        _books.InsertOne(book);
        return book;
    }

    public void Update(string id, Book bookIn)
    {
        _books.ReplaceOne(book => book.Id == id, bookIn);
    }

    public void Remove(Book bookIn)
    {
        _books.DeleteOne(book => book.Id == bookIn.Id);
    }

    public void Remove(string id)
    {
        _books.DeleteOne(book => book.Id == id);
    }
}

1 Ответ

1 голос
/ 19 апреля 2019

Я лично нахожу драйвер Mongodb c # немного пугающим, исходящим из фона Entity Framework.

К счастью, я нашел этот маленький драгоценный камень слоя абстракции под названием MongoDAL , который делает его довольно простымработать с драйвером Mongodb.

Он поддерживает регистрацию в системе внедрения зависимостей ASP.Net Core или просто использует статический класс DB для выполнения операций и написания запросов LINQ для любой из моих коллекций полностью безопасным способом.Вы также можете легко создавать свои собственные репозитории.Также не нужно иметь дело с типами ObjectId или BsonDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...