TK.MongoDB.Repository
1.0.6
See the version list below for details.
dotnet add package TK.MongoDB.Repository --version 1.0.6
NuGet\Install-Package TK.MongoDB.Repository -Version 1.0.6
<PackageReference Include="TK.MongoDB.Repository" Version="1.0.6" />
paket add TK.MongoDB.Repository --version 1.0.6
#r "nuget: TK.MongoDB.Repository, 1.0.6"
// Install TK.MongoDB.Repository as a Cake Addin #addin nuget:?package=TK.MongoDB.Repository&version=1.0.6 // Install TK.MongoDB.Repository as a Cake Tool #tool nuget:?package=TK.MongoDB.Repository&version=1.0.6
TK.MongoDB.Repository
Repository pattern implementation (using linq) of MongoDB in .NET Framework
Usage
Settings
Default
ConnectionStringSettingName
is set to "MongoDocConnection", but you can configure this by calling a static method as below:Settings.Configure("MongoDocConnection");
you can configure
ExpiryAfterSeconds
index for a specific collection by calling a static method as below:Settings.Configure<Activity>(2592000);
Example:
public class RepoUnitTest { Repository<Activity> ActivityRepository; public RepoUnitTest() { Settings.Configure("MongoDocConnection"); Settings.Configure<Activity>(2592000); ActivityRepository = new Repository<Activity>(); } //.... other methods and properties }
Models
Create a document model implementing $BaseEntity$ to use in repository. The name of this model will be used as collection name in MongoDB.
public class Activity : BaseFile<ObjectId>
{
public string Name { get; set; }
}
Repository methods
Find asynchronous (using Linq Expression.)
Activity result = ActivityRepository.FindAsync(x => x.Id == new ObjectId("5e36997898d2c15a400f8968")).Result;
Get asynchronous (by Id)
Activity result = ActivityRepository.GetAsync(new ObjectId("5e36997898d2c15a400f8968")).Result;
Get asynchronous (using Linq Expression.)
Has paged records in a
Tuple<IEnumerable<T>, long>
of records and total count.var result = ActivityRepository.GetAsync(1, 10, x => x.Name.Contains("abc") && x.Deleted == false).Result; Console.WriteLine($"Output:\nTotal: {result.Item2}\n{JToken.Parse(JsonConvert.SerializeObject(result.Item1)).ToString(Formatting.Indented)}");
Get synchronous (using Linq Expression.)
Has nonpaged records.
var result = ActivityRepository.Get(x => x.Name.Contains("abc") && x.Deleted == false);
In synchronous (Get by
IN
filter. Nonpaged records)List<string> names = new List<string> { "abc", "def", "ghi" }; var result = ActivityRepository.In(x => x.Name, names);
Insert asynchronous
Activity activity = new Activity() { Name = "abc" }; Activity result = ActivityRepository.InsertAsync(activity).Result;
Update asynchronous
Activity activity = new Activity() { Id = new ObjectId("5e36998998d2c1540ca23894"), Name = "abc3" }; bool result = ActivityRepository.UpdateAsync(activity).Result;
Delete asynchronous (by Id)
bool result = ActivityRepository.DeleteAsync(new ObjectId("5e36998998d2c1540ca23894")).Result;
Count asynchronous
long result = ActivityRepository.CountAsync().Result;
Exists asynchronous (using Linq Expression)
bool result = ActivityRepository.ExistsAsync(x => x.Name == "abc").Result;
Tests
Refer to TK.MongoDB.Test project for all Unit Tests.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
- MongoDB.Driver (>= 2.10.1)
- SharpCompress (>= 0.24.0)
- System.Buffers (>= 4.5.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 |
---|---|---|
2.1.6 | 2,025 | 8/29/2022 |
2.1.5 | 1,014 | 1/17/2022 |
2.1.4 | 2,009 | 6/21/2021 |
2.1.3 | 1,039 | 2/24/2021 |
2.1.2 | 1,460 | 10/13/2020 |
2.1.1 | 1,218 | 8/20/2020 |
2.1.0 | 971 | 8/20/2020 |
1.0.10 | 1,053 | 8/16/2020 |
1.0.9 | 917 | 8/11/2020 |
1.0.8 | 1,007 | 8/10/2020 |
1.0.7 | 1,349 | 6/11/2020 |
1.0.6 | 1,116 | 2/5/2020 |
1.0.5 | 1,125 | 2/5/2020 |
1.0.4 | 952 | 2/4/2020 |
1.0.3 | 1,006 | 2/3/2020 |
1.0.2 | 1,069 | 2/2/2020 |
Get all and In methods added to repository