Mongo.Generics
2024.1.1
Moved to Mongo.GenericClient
dotnet add package Mongo.Generics --version 2024.1.1
NuGet\Install-Package Mongo.Generics -Version 2024.1.1
<PackageReference Include="Mongo.Generics" Version="2024.1.1" />
<PackageVersion Include="Mongo.Generics" Version="2024.1.1" />
<PackageReference Include="Mongo.Generics" />
paket add Mongo.Generics --version 2024.1.1
#r "nuget: Mongo.Generics, 2024.1.1"
#:package Mongo.Generics@2024.1.1
#addin nuget:?package=Mongo.Generics&version=2024.1.1
#tool nuget:?package=Mongo.Generics&version=2024.1.1
Mongo.Generics
Generic library to manage a MongoDB database.
Source code: https://github.com/fmanuelgf/Mongo.Generics
Required environment variables
"MONGODB_CONNECTION_STRING"(e.g., "mongodb://root:root@localhost:27017")"MONGODB_DATABASE_NAME"(e.g., "my_mongodb")
Interfaces
Reposirory
namespace Mongo.Generics.Core.Repositories
{
using Mongo.Generics.Core.Entities;
using MongoDB.Driver;
public interface IGenericRepository<TEntity>
where TEntity : IEntity
{
IMongoCollection<TEntity> Collection { get; }
}
}
Services
namespace Mongo.Generics.Core.Services
{
using System.Collections.Generic;
using System.Threading.Tasks;
using Mongo.Generics.Core.Entities;
using Mongo.Generics.Models;
using MongoDB.Bson;
public interface IReadService<TEntity>
where TEntity : IEntity
{
IEnumerable<TEntity> GetAll();
IMongoQueryable<TEntity> AsQueryable();
Task<PaginationResult<TEntity>> GetPaginatedAsync(
int pageNum,
int pageSize);
Task<TEntity> GetByIdAsync(ObjectId id);
}
}
namespace Mongo.Generics.Core.Services
{
using System.Threading.Tasks;
using Mongo.Generics.Core.Entities;
using MongoDB.Bson;
public interface IWriteService<TEntity>
where TEntity : IEntity
{
Task<TEntity> CreateAsync(TEntity entity);
Task<bool> UpdateAsync(TEntity entity);
Task DeleteAsync(ObjectId id);
}
}
IEntity
namespace Mongo.Generics.Core.Entities
{
using MongoDB.Bson;
public interface IEntity
{
ObjectId Id { get; set; }
}
}
Usage
Defining an entity and its collection name:
- The class must implement
IEntityand have the attributeCollectionName
namespace Mongo.Generics.Tests.SetUp
{
using Mongo.Generics.Core.Attributes;
using Mongo.Generics.Core.Entities;
using MongoDB.Bson;
[CollectionName("persons")]
public class PersonEntity : IEntity
{
public ObjectId Id { get ; set; }
public string Name { get; set; } = string.Empty;
public int Age { get; set; }
}
}
Creating a collection (or just inserting data)
- Using the repository
await this.repository.Collection.InsertOneAsync(entity);
- Using the service
await this.writeService.CreateAsync(entity);
Note
In order to run the tests, you must first run
docker compose up -d.You can then manage the database at http://localhost:8081, with:
- User: user
- Password: pwd
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- MongoDB.Driver (>= 2.29.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|