学习别人的代码,复制过来。
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Linq;usingMongoDB.Bson;usingMongoDB.Driver;usingMongoDB.Attributes;usingMongoDB.Configuration;usingSystem.Linq.Expressions;usingMongoDB;usingMongoDB.Linq;namespace showPicture1{ classMongodbHelper { string connectionString =string.Empty; string databaseName =string.Empty; string collectionName =string.Empty; //static MongodbHelper<T> mongodb; #region 初始化操作 /// <summary> /// 初始化操作 /// </summary> publicMongodbHelper() { connectionString ="mongodb://localhost"; //创建数据连接 databaseName ="shopex"; //获取指定数据库 collectionName ="person"; //获取表 } #endregion #region 实现linq查询的映射配置 /// <summary> /// 实现linq查询的映射配置 /// </summary> publicMongoConfiguration configuration { get { var config =newMongoConfigurationBuilder(); config.Mapping(mapping => { mapping.DefaultProfile(profile => { profile.SubClassesAre(t => t.IsSubclassOf(typeof(T))); }); mapping.Map<T>(); mapping.Map<T>(); }); config.ConnectionString(connectionString); return config.BuildConfiguration(); } } #endregion #region 插入操作 /// <summary> /// 插入操作 /// </summary> /// <param name="person"></param> /// <returns></returns> publicvoidInsert(T t) { using(Mongo mongo =newMongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection<T>(collectionName); collection.Insert(t,true); mongo.Disconnect(); } catch(Exception) { mongo.Disconnect(); throw; } } } #endregion #region 更新操作 /// <summary> /// 更新操作 /// </summary> /// <param name="person"></param> /// <returns></returns> publicvoidUpdate(T t,Expression<Func<T,bool>> func) { using(Mongo mongo =newMongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection<T>(collectionName); collection.Update<T>(t, func,true); mongo.Disconnect(); } catch(Exception) { mongo.Disconnect(); throw; } } } #endregion #region 获取集合 /// <summary> ///获取集合 /// </summary> /// <param name="person"></param> /// <returns></returns> publicList<T>List(int pageIndex,int pageSize,Expression<Func<T,bool>> func,outint pageCount) { pageCount =0; using(Mongo mongo =newMongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection<T>(collectionName); pageCount =Convert.ToInt32(collection.Count()); var personList = collection.Linq().Where(func).Skip(pageSize *(pageIndex -1)) .Take(pageSize).Select(i => i).ToList(); mongo.Disconnect(); return personList; } catch(Exception) { mongo.Disconnect(); throw; } } } #endregion #region 读取单条记录 /// <summary> ///读取单条记录 /// </summary> /// <param name="person"></param> /// <returns></returns> public T Single(Expression<Func<T,bool>> func) { using(Mongo mongo =newMongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection<T>(collectionName); var single = collection.Linq().FirstOrDefault(func); mongo.Disconnect(); return single; } catch(Exception) { mongo.Disconnect(); throw; } } } #endregion #region 删除操作 /// <summary> /// 删除操作 /// </summary> /// <param name="person"></param> /// <returns></returns> publicvoidDelete(Expression<Func<T,bool>> func) { using(Mongo mongo =newMongo(configuration)) { try { mongo.Connect(); var db = mongo.GetDatabase(databaseName); var collection = db.GetCollection<T>(collectionName); //这个地方要注意,一定要加上T参数,否则会当作object类型处理 //导致删除失败 collection.Remove<T>(func); mongo.Disconnect(); } catch(Exception) { mongo.Disconnect(); throw; } } } #endregion }