{......"BookstoreDatabaseSettings": {"BooksCollectionName": "Books","ConnectionString": "mongodb://mongo-master:27017","DatabaseName": "BookStoreDB"}}需要注意的是:這里的連接字符串指向的是一個沒有設(shè)置用戶名密碼的MongoDB節(jié)點 。如果你的MongoDB節(jié)點設(shè)置了用戶名密碼 或者 復(fù)制集分片集 之類的 , 請修改為匹配的連接字符串 。
然后 , 創(chuàng)建一個配置項類 , 也放到Models目錄中:
namespace EDT.BookStore.API.Models{public class BookStoreDatabaseSettings : IBookStoreDatabaseSettings{public string BooksCollectionName { get; set; }public string ConnectionString { get; set; }public string DatabaseName { get; set; }}public interface IBookStoreDatabaseSettings{string BooksCollectionName { get; set; }string ConnectionString { get; set; }string DatabaseName { get; set; }}}最后 , 將其加入到IoC容器中控制:
public void ConfigureServices(IServiceCollection services){..... // AutoMapper Settingsservices.AddAutoMapper(typeof(MappingConfigs));// MongoDB Settingsservices.Configure<BookStoreDatabaseSettings>(Configuration.GetSection(nameof(BookStoreDatabaseSettings)));services.AddSingleton<IBookStoreDatabaseSettings>(sp =>sp.GetRequiredService<IOptions<BookStoreDatabaseSettings>>().Value);}這里 , IBookstoreDatabaseSettings 接口使用單一實例服務(wù)生存期在 DI 中注冊 。在注入時 , 接口實例時將解析為 BookStoreDatabaseSettings 對象 。
添加BookService提供CRUD服務(wù)
在Services目錄下 , 創(chuàng)建IBookService接口:
namespace EDT.BookStore.API.Services{public interface IBookService{IList<Book> Get();Task<IList<Book>> GetAsync();Book Get(string id);Task<Book> GetAsync(string id);Book Create(Book book);Task<Book> CreateAsync(Book book);void Update(string id, Book bookIn);Task UpdateAsync(string id, Book bookIn);void Remove(string id);Task RemoveAsync(string id);}}然后 , 創(chuàng)建BookService 實現(xiàn) IBookService 接口 。
namespace EDT.BookStore.API.Services{public class BookService : IBookService{private readonly IMongoCollection<Book> _books;public BookService(IBookStoreDatabaseSettings settings){var mongoClient = new MongoClient(settings.ConnectionString);var mongoDatabase = mongoClient.GetDatabase(settings.DatabaseName);_books = mongoDatabase.GetCollection<Book>(settings.BooksCollectionName);}public Book Create(Book book){_books.InsertOne(book);return book;}public async Task<Book> CreateAsync(Book book){await _books.InsertOneAsync(book);return book;}public IList<Book> Get(){return _books.Find(book => true).ToList();}public async Task<IList<Book>> GetAsync(){return await _books.Find(book => true).ToListAsync();}public Book Get(string id){return _books.Find(book => book.Id == id).FirstOrDefault();}public async Task<Book> GetAsync(string id){return await _books.Find(book => book.Id == id).FirstOrDefaultAsync();}public void Remove(string id){_books.DeleteOne(book => book.Id == id);}public async Task RemoveAsync(string id){await _books.DeleteOneAsync(book => book.Id == id);}public void Update(string id, Book bookIn){_books.ReplaceOne(book => book.Id == id, bookIn);}public async Task UpdateAsync(string id, Book bookIn){await _books.ReplaceOneAsync(book => book.Id == id, bookIn);}}}在上面的代碼中 , 會通過構(gòu)造函數(shù)從DI檢索IBookStoreDatabaseSettings實例獲取MongoDB連接字符串、數(shù)據(jù)庫名 和 集合名 。
當然 , 我們也可以使用 約定大于配置 的方式 , 統(tǒng)一采用實體類的名字 作為默認的 集合名 , 示例如下:
_books = mongoDatabase.GetCollection<Book>(typeof(Book).Name);
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- mongodb是nosql數(shù)據(jù)庫嗎 4 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 6 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 7 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 8 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 9 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 11 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 12 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程
- mongodb是nosql數(shù)據(jù)庫嗎 14 NoSQL | MongoDB入門實戰(zhàn)教程
- 做雙眼皮有幾種方法
