MongoDB 工具助手类(.NET)
在开发过程中,需要用到MongoDB,本身MongoDB自己对类的封装就特别好了。为了更加符合我们平时的开发使用,我现在进行了一个简单的封装操作。
连接数据库类:MongoDBContext
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration; using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using MongoDB.Driver.Linq; namespace XXXXX.MongoDB
{
public class MongoDBContext
{
// 数据库链接
private readonly MongoDatabase database; public MongoDBContext()
: this(ConfigurationManager.AppSettings["DefaultMongoDBConnection"], ConfigurationManager.AppSettings["DefaultMonoDbDatabase"])
{
} /// <summary>
/// 构造函数。根据指定连接字符串和数据库名
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="dbName">数据库名</param>
public MongoDBContext(string connectionString, string dbName)
{
if (string.IsNullOrEmpty(connectionString))
{
throw new ArgumentNullException("connectionString is null");
} if (string.IsNullOrEmpty(dbName))
{
throw new ArgumentNullException("dbName is null");
} var client = new MongoClient(connectionString);
var server = client.GetServer();
this.database = server.GetDatabase(dbName);
} /// <summary>
/// 获取当前连接数据库的指定集合【依据类型】
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public MongoCollection<T> Collection<T>()
{
return database.GetCollection<T>(typeof(T).Name);
}
}
}
服务操作类:MongoDBService
using MongoDB.Driver.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks; namespace XXXXX.MongoDB
{ public class MongoDBService<T> : IMongoDBService<T> where T : class,new()
{
MongoDBContext mc = new MongoDBContext(); /// <summary>
/// 查询符合条件的集合
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public IEnumerable<T> GetList()
{
var query = Query<T>.Where(o => true);
return mc.Collection<T>().Find(query);
} /// <summary>
/// 查询符合条件的集合
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public IEnumerable<T> GetList(Expression<Func<T, bool>> whereLambda)
{
var query = Query<T>.Where(whereLambda);
return mc.Collection<T>().Find(query);
} /// <summary>
/// 查询一条记录
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
public T GetOne(Expression<Func<T, bool>> whereLambda)
{
var query = GetList(whereLambda).FirstOrDefault();
return query;
} /// <summary>
/// 增加
/// </summary>
/// <param name="entity"></param>
public void Insert(T entity)
{
mc.Collection<T>().Insert(entity);
} /// <summary>
/// 批量增加
/// </summary>
/// <param name="entitys"></param>
public void InsertAll(IEnumerable<T> entitys)
{
mc.Collection<T>().InsertBatch(entitys);
} /// <summary>
/// 更新一个实体
/// </summary>
/// <param name="entity"></param>
public void Update(T entity)
{
mc.Collection<T>().Save(entity);
} /// <summary>
/// 删除
/// </summary>
/// <param name="whereLambda"></param>
public void Remove(Expression<Func<T, bool>> whereLambda)
{
var query = Query<T>.Where(whereLambda);
mc.Collection<T>().Remove(query);
}
}
}
上面方法封装完后,我们就可以直接使用了。使用很简单,比如,我有一个ActivityModel实体,使用时,如下:
public void activityTest()
{
var activityDb = new MongoDBService<ActivityModel>();
var activityList = activityDb.GetList().ToList();
var activity = activityDb.GetOne(o => o.Id==ObjectId.Parse("54d9aecd89f0bd14d81a63a7"));
var xxx = activity.To();
}
MongoDB 工具助手类(.NET)的更多相关文章
- JAVA单例MongoDB工具类
我经常对MongoDB进行一些基础操作,将这些常用操作合并到一个工具类中,方便自己开发使用. 没用Spring Data.Morphia等框架是为了减少学习.维护成本,另外自己直接JDBC方式的话可以 ...
- mongodb工具类
pom.xml文件增加Mongodb jar包 <dependency> <groupId>org.mongodb</groupId> <artifactId ...
- ADO.NET数据库操作助手类
SQL语句操作增删查改助手类 using System; using System.Collections.Generic; using System.Configuration; using Sys ...
- 【C#】SQL数据库助手类2.0(自用)
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- AES加密解密 助手类 CBC加密模式
"; string result1 = AESHelper.AesEncrypt(str); string result2 = AESHelper.AesDecrypt(result1); ...
- Yii2 数组助手类arrayHelper
数组助手类 ArrayHelper 1.什么是数组助手类 Yii 数组助手类提供了额外的静态方法,让你更高效的处理数组. a.获取值(getValue) class User { public $na ...
- Linux性能优化 第八章 实用工具:性能工具助手
8.1性能工具助手 Linux有丰富的工具,这些工具组合来使用会更加强大.性能工具也一样,单独使用虽然也没有问题,但是和其他的工具组合起来就能显著提高有效性和易用性. 8.1.1 自动执行和记录命令 ...
- WorldWind源码剖析系列:代理助手类ProxyHelper
代理助手类ProxyHelper通过平台调用的互操作技术封送了若干Win32结构体和函数.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: 内嵌类型WINHTTP_AUTOPROX ...
- WorldWind源码剖析系列:图像助手类ImageHelper
图像助手类ImageHelper封装了对各种图像的操作.该类类图如下. 提供的主要处理方法基本上都是静态函数,简要描述如下: public static bool IsGdiSupportedImag ...
随机推荐
- Linux(Ubuntu)下也能用搜狗输入法了!!!
Ubuntu原生的中文输入法是不是总有点别扭? 不用再别扭了. 告诉你一个好消息:Linux(Ubuntu)下也能用搜狗输入法了!!! 下载地址:http://pinyin.sogou.com/lin ...
- 关于array.sort(array,array)
// 基于第一个 System.Array 中的关键字,使用每个关键字的 System.IComparable 实现,对两个一维 System.Array // 对象(一个包含关键字,另一个包含对应的 ...
- Android studio Unable to start the daemon process
Unable to start the daemon process.This problem might be caused by incorrect configuration of the da ...
- C语言中scanf函数的实现
接上一篇C语言中可变参数函数实现原理,从理论上详细介绍了C语言中可变参数函数的实现,这一篇从minix内核源码中的scanf函数入手,学习C语言经典可变参数函数的实现过程 在scanf.c文件中,可以 ...
- vs 的git插件
在vs2013上Tfs提供的git管理完全无法理解他的管理方式,还是 Git Source Control Provider 好用用. 下载地址: [http://gitscc.codeplex.co ...
- IntelliJ IDEA导出Java 可执行Jar包
extends:http://blog.sina.com.cn/s/blog_3fe961ae0102uy42.html 保证自己的Java代码是没有问题的,在IDEA里面是可以正常运行的,然后,按下 ...
- vue--使用过滤器
有个项目需要可以添加和删除选项,但是左侧要显示的 A,B,C,D.... 解决思路: 循环的时候
- thinkCMF----如何写标签
ThinkCMF写标签的地方:
- DLRS(近三年深度学习应用于推荐系统论文汇总)
Recommender Systems with Deep Learning Improving Scalability of Personalized Recommendation Systems ...
- PHP Architecture
http://www.laruence.com/2008/08/12/180.html