Esempio n. 1
0
        public Task ExecuteAsync(IMongoSessionContext sessionContext)
        {
            TDocument document = _toDocument(_aggregate);

            return(sessionContext.GetCollection <TDocument>()
                   .ReplaceOneAsync(
                       Builders <TDocument> .Filter.Eq(d => d.Id, _aggregate.Id),
                       document));
        }
Esempio n. 2
0
        public void Execute(IMongoSessionContext sessionContext)
        {
            TDocument document = _toDocument(_aggregate);

            sessionContext.GetCollection <TDocument>()
            .ReplaceOne(
                Builders <TDocument> .Filter.Eq(d => d.Id, _aggregate.Id),
                document);
        }
        public virtual async Task <TAggregate> FindOrDefault(TId id)
        {
            if (_identityMap.TryGet(id, out TAggregate aggregate))
            {
                return(aggregate);
            }

            await _identityMapLock.WaitAsync();

            try
            {
                if (!_identityMap.ContainsEntry(id))
                {
                    var collection = _dbContext.GetCollection <TDocument>();

                    TDocument document = await collection
                                         .Find(Builders <TDocument> .Filter.Eq(d => d.Id, id))
                                         .SingleOrDefaultAsync();

                    //var document = await collection.FindOneAndUpdateAsync(
                    //	Builders<TDocument>.Filter.Eq(d => d.Id, id),
                    //	Builders<TDocument>.Update.Set(d => d.SessionLock, Guid.NewGuid().ToString()));

                    if (document == null)
                    {
                        return(null);
                    }

                    _identityMap.SetFromLoad(_mapper.ToAggregate(document));
                }
            }
            finally
            {
                _identityMapLock.Release();
            }

            return(_identityMap.Get(id));
        }
Esempio n. 4
0
 public Task ExecuteAsync(IMongoSessionContext sessionContext)
 {
     return(sessionContext.GetCollection <TDocument>()
            .DeleteOneAsync(Builders <TDocument> .Filter.Eq(d => d.Id, _aggregate.Id)));
 }
Esempio n. 5
0
        public Task ExecuteAsync(IMongoSessionContext sessionContext)
        {
            TDocument document = _toDocument(_aggregate);

            return(sessionContext.GetCollection <TDocument>().InsertOneAsync(document));
        }
Esempio n. 6
0
        public void Execute(IMongoSessionContext sessionContext)
        {
            TDocument document = _toDocument(_aggregate);

            sessionContext.GetCollection <TDocument>().InsertOne(document);
        }