예제 #1
0
        public void Update <T, TField>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filter, Expression <Func <T, TField> > updateExp, TField value)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <T>(nonSqlSchema.CollectionName);

            collection.UpdateOne(filter, GetUpdateDefinition(updateExp, value));
        }
예제 #2
0
        public void Update <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filter, IDictionary <string, object> updateParameters)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <T>(nonSqlSchema.CollectionName);

            collection.UpdateOne(filter, GetUpdateDefinition <T>(updateParameters));
        }
예제 #3
0
        public IEnumerable <TNewProjection> GetItems <T, TNewProjection>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filterExpression, Expression <Func <T, TNewProjection> > projectionExpression)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.Find(filterExpression).Project(projectionExpression).ToList());
        }
예제 #4
0
        public Task InsertRangeAsync <T>(NonSqlSchema nonSqlSchema, IEnumerable <T> objs)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.InsertManyAsync(objs));
        }
예제 #5
0
        public IQueryable <T> GetMongoQueryable <T>(NonSqlSchema nonSqlSchema)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.AsQueryable().AsQueryable());
        }
예제 #6
0
        public Task GetAllAsync <T>(NonSqlSchema nonSqlSchema)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.FindAsync(FilterDefinition <T> .Empty));
        }
예제 #7
0
        public async Task <T> GetItemAsync <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filterExpression)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(await collection.Find(filterExpression).FirstOrDefaultAsync());
        }
예제 #8
0
        public Task ReplaceAsync <TDocument>(NonSqlSchema nonSqlSchema, Expression <Func <TDocument, bool> > filter, TDocument newDocument)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <TDocument>(nonSqlSchema.CollectionName);

            return(collection.ReplaceOneAsync(filter, newDocument));
        }
예제 #9
0
        public IEnumerable <T> GetAll <T>(NonSqlSchema nonSqlSchema)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.Find(FilterDefinition <T> .Empty).ToList());
        }
예제 #10
0
        public Task InsertAsync <T>(NonSqlSchema nonSqlSchema, T obj)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.InsertOneAsync(obj));
        }
예제 #11
0
        public Task DeleteAsync <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filter)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.DeleteOneAsync(filter));
        }
예제 #12
0
        public T GetItem <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filterExpression)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.Find(filterExpression).FirstOrDefault());
        }
예제 #13
0
        public Task GetItemsAsync <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filterExpression)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            return(collection.FindAsync(filterExpression));
        }
예제 #14
0
        public Task <bool> ReplaceAsync <TDocument>(NonSqlSchema nonSqlSchema, Expression <Func <TDocument, bool> > filter, TDocument newDocument)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <TDocument>(nonSqlSchema.CollectionName);
            var status     = collection.ReplaceOneAsync(filter, newDocument).Result;

            return(Task.FromResult(status.IsAcknowledged && status.ModifiedCount > 0));
        }
예제 #15
0
        public Task <bool> UpdateAsync <T, TField>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filter, Expression <Func <T, TField> > updateExp, TField value)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);
            var status     = collection.UpdateOneAsync(filter, GetUpdateDefinition(updateExp, value)).Result;

            return(Task.FromResult(status.IsAcknowledged && status.ModifiedCount > 0));
        }
예제 #16
0
        public bool Insert <T>(NonSqlSchema nonSqlSchema, T obj)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            collection.InsertOne(obj);
            return(true);
        }
예제 #17
0
        public async Task <bool> InsertRangeAsync <T>(NonSqlSchema nonSqlSchema, IEnumerable <T> objs)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);
            await collection.InsertManyAsync(objs);

            return(true);
        }
예제 #18
0
        public bool InsertRange <T>(NonSqlSchema nonSqlSchema, IEnumerable <T> objs)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);

            collection.InsertMany(objs);
            return(true);
        }
예제 #19
0
        public async Task <bool> InsertAsync <T>(NonSqlSchema nonSqlSchema, T obj)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);
            await collection.InsertOneAsync(obj);

            return(true);
        }
예제 #20
0
        public Task <bool> UpdateAsync <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filter, IDictionary <string, object> updateParameters)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);
            var status     = collection.UpdateOneAsync(filter, GetUpdateDefinition <T>(updateParameters)).Result;

            return(Task.FromResult(status.IsAcknowledged && status.ModifiedCount > 0));
        }
예제 #21
0
        public bool Delete <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filter)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);
            var status     = collection.DeleteOne(filter);

            return(status.IsAcknowledged && status.DeletedCount > 0);
        }
예제 #22
0
        public bool Replace <TDocument>(NonSqlSchema nonSqlSchema, Expression <Func <TDocument, bool> > filter, TDocument newDocument)
        {
            var mongoDb    = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mongoDb.GetCollection <TDocument>(nonSqlSchema.CollectionName);
            var status     = collection.ReplaceOne(filter, newDocument);

            return(status.IsAcknowledged && status.ModifiedCount > 0);
        }
예제 #23
0
        public Task <bool> DeleteAsync <T>(NonSqlSchema nonSqlSchema, Expression <Func <T, bool> > filter)
        {
            var mDb        = _mongoClient.GetDatabase(nonSqlSchema.DataBaseName);
            var collection = mDb.GetCollection <T>(nonSqlSchema.CollectionName);
            var status     = collection.DeleteOneAsync(filter).Result;

            return(Task.FromResult(status.IsAcknowledged && status.DeletedCount > 0));
        }
예제 #24
0
 protected BaseRepository(INonSqlDataSource nonSqlDataSource, string dbName, string collName)
 {
     NonSqlSchema     = new NonSqlSchema(dbName, collName);
     NonSqlDataSource = nonSqlDataSource;
 }