您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

BaseRepository.cs 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using Diligent.WebAPI.Business.Interfaces;
  2. using Diligent.WebAPI.Data;
  3. using MongoDB.Bson;
  4. using MongoDB.Driver;
  5. using System.Diagnostics.CodeAnalysis;
  6. namespace Diligent.WebAPI.Business.Services
  7. {
  8. [ExcludeFromCodeCoverage]
  9. public class BaseRepository<TEntity> : IBaseRepository<TEntity> where TEntity : class
  10. {
  11. protected readonly IMongoDBContext _mongoContext;
  12. protected IMongoCollection<TEntity> _dbCollection;
  13. private readonly FilterDefinitionBuilder<TEntity> _builder = Builders<TEntity>.Filter;
  14. public BaseRepository(IMongoDBContext context)
  15. {
  16. _mongoContext = context;
  17. _dbCollection = _mongoContext.GetCollection<TEntity>(typeof(TEntity).Name);
  18. }
  19. public async Task<List<TEntity>> GetAsync()
  20. {
  21. var all = await _dbCollection.FindAsync(_builder.Empty);
  22. return await all.ToListAsync();
  23. }
  24. public async Task<TEntity> GetByIdAsync(string id)
  25. {
  26. var element = await _dbCollection.FindAsync(_builder.Eq("_id", new ObjectId(id)));
  27. return await element.FirstOrDefaultAsync();
  28. }
  29. public async Task RemoveAsync(string id)
  30. {
  31. await _dbCollection.FindOneAndDeleteAsync(_builder.Eq("_id", new ObjectId(id)));
  32. }
  33. public async Task UpdateAsync(string id, TEntity updateEntity)
  34. {
  35. await _dbCollection.FindOneAndReplaceAsync(_builder.Eq("_id", new ObjectId(id)), updateEntity);
  36. }
  37. public async Task CreateAsync(TEntity entity)
  38. {
  39. await _dbCollection.InsertOneAsync(entity);
  40. }
  41. }
  42. }