GithubHelp home page GithubHelp logo

viceri / unit-of-work-mongo Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 2.0 15 KB

Implementação do padrão unit of work com mongodb e c#

C# 100.00%
mongodb csharp unitofwork unitofworkpattern unitofwork-pattern

unit-of-work-mongo's Introduction

Unit of work mongodb

Para aplicar o pattern Unit of Work no mongo é preciso habilitar o replica set, senão o seguinte erro irá retornar: This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string. Para mais informações veja a documentação do mongodb sobre o retry writes.

Se estiver usando docker.

nuget link

link nuget: https://www.nuget.org/packages/UnitOfWorkMongo/

Install

Install-Package UnitOfWorkMongo

Usage

    var mongoClient = new MongoClient("mongodb://localhost");
    var transactionOptions = new TransactionOptions(readPreference: ReadPreference.Primary, readConcern: ReadConcern.Local, writeConcern: WriteConcern.WMajority);
    var unitOfWorkMongo =  new UnitOfWorkMongo.UnitOfWork(mongoClient, transactionOptions); 
    
    var database1 = client.GetDatabase("mydb1");
    var collection1 = database1.GetCollection<BsonDocument>("foo").WithWriteConcern(WriteConcern.WMajority);
    collection1.InsertOne(new BsonDocument("abc", 0));
    
    var database2 = client.GetDatabase("mydb2");
    var collection2 = database2.GetCollection<BsonDocument>("bar").WithWriteConcern(WriteConcern.WMajority);
    collection2.InsertOne(new BsonDocument("xyz", 0));
    
    await unitOfWorkMongo.WithTransactionAsync(async (s, c) =>
    {
    	collection1.InsertOne(s, new BsonDocument("abc", 1), cancellationToken: ct);
    	collection2.InsertOne(s, new BsonDocument("xyz", 999), cancellationToken: ct);
    	return "Inserted into collections in different databases";
    },
    CancellationToken.None);

unit-of-work-mongo's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.