发布网友 发布时间:2022-05-01 21:40
共2个回答
懂视网 时间:2022-05-02 02:01
using MongoDB.Driver; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace KyeDePart.Common.BLL { public class MongoDBHelper<T> where T : class { protected MongoClient mongoclient; protected IMongoDatabase database; protected IMongoCollection<T> collection; //public static MongoDBHelper<T> MongoDB=new MongoDBHelper<T>(); /// <summary> /// 初始化操作 /// </summary> public MongoDBHelper() { try { mongoclient = new MongoDB.Driver.MongoClient(ConfigurationSettings.AppSettings["MongoConnect"]); database = mongoclient.GetDatabase(ConfigurationSettings.AppSettings["MongoDatabase"]); collection = database.GetCollection<T>(typeof(T).Name); } catch (Exception ex) { Common.WriteLogFile(ex.ToString()); } } /// <summary> /// MongoDB 语法 /// </summary> /// <param name="filter"></param> /// <returns></returns> public T Query(FilterDefinition<T> filter) { return collection.Find(filter).FirstOrDefaultAsync().Result; } /// <summary> /// Linq 语法 /// </summary> /// <param name="func"></param> /// <returns></returns> public T Query(Expression<Func<T, bool>> func) { //collection.Find(func).ForEachAsync(x =>Console.WriteLine("")); return collection.Find(func).FirstOrDefaultAsync().Result; } public List<T> QueryList(FilterDefinition<T> filter) { //var s = collection.Find(filter).ForEachAsync(x => Console.WriteLine("")); return collection.Find(filter).ToListAsync().Result; } public List<T> QueryList(Expression<Func<T, bool>> func) { return collection.Find(func).ToListAsync().Result; } /// <summary> /// 分页查询 /// Skip 性能不高 /// </summary> /// <returns></returns> public List<T> QueryList(int PageIndex, int PageSize, Expression<Func<T, bool>> func, out long RecordCount) { RecordCount = collection.Find(func).Count(); //方法一: return collection.AsQueryable<T>().Where(func).OrderByDescending(t => "_id").Skip(PageIndex * PageSize).Take(PageSize).ToList(); } public bool IsExist(FilterDefinition<T> filter) { if (collection.Find(filter).FirstAsync().Result != null) return true; else return false; } public bool IsExist(Expression<Func<T, bool>> func) { if (collection.Find(func).FirstOrDefaultAsync().Result != null) return true; else return false; //long count = collection.CountAsync(func).Result; //if (count > 0) // return true; //else // return false; } public void Add(T model) { collection.InsertOneAsync(model); } public void Delete(Expression<Func<T, bool>> func) { collection.DeleteOneAsync(func); } public void Delete(FilterDefinition<T> filter) { collection.DeleteOneAsync(filter); } public void DeleteMany(Expression<Func<T, bool>> func) { collection.DeleteMany(func); } public void Update(FilterDefinition<T> filter, UpdateDefinition<T> updated) { collection.UpdateOneAsync(filter, updated); } public void UpdateMany(FilterDefinition<T> filter, UpdateDefinition<T> updated) { collection.UpdateManyAsync(filter, updated); } public void Update(Expression<Func<T, bool>> func, UpdateDefinition<T> updated) { collection.UpdateOneAsync(func, updated); } public void UpdateMany(Expression<Func<T, bool>> func, UpdateDefinition<T> updated) { collection.UpdateManyAsync(func, updated); } } }
Model
public class PerSon { public ObjectId _id; public string Name { get; set; } public int Age { get; set; } }
使用方法
public class PerSonBLL { protected static MongoDBHelper<Models.PerSon> mongoDB = new MongoDBHelper<Models.PerSon>(); public static List<Models.PerSon> GetList() { return mongoDB.QueryList(t => t.Age > 10); } }
MongoDBHelper
标签:mode art eric upd foreach base names lin ted
热心网友 时间:2022-05-01 23:09
官方参考: