MVC——就酱紫一个系列,这是一个好的开始4
我们继续
我们 在core 里面 新建一个Sevice文件夹
这个文件夹 我们用来存放 一下 方法类接口
新建一个基类接口 ICrudService
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Model; using MongoDB.Driver; namespace Core.Service { public interface ICrudService<T> where T : Entity, new() { long Add(T e); void Add(IEnumerable<T> items); void Update(T item); void Delete(long id); void DeleteAll(); long Count(); T Single(long id); IEnumerable<T> GetAll(); IEnumerable<T> Where(Expression<Func<T, bool>> func); IEnumerable<T> Where(IMongoQuery query); IEnumerable<T> GetPageList(IMongoQuery query, IMongoFields f, IMongoSortBy s, int curPage, int pageNum); IEnumerable<T> GetPageList(IMongoQuery query, IMongoFields f, IMongoSortBy s, int curPage, int pageNum, int lastMaxId); } }
以后每个实体的操作都继承上面的基类接口
: ICrudService<Favorites>
在里面添加一个方法
/// <summary> /// 通过主键ID得到实体 /// </summary> /// <param name="id"></param> /// <returns></returns> Classification GetClassification(long id);
基本的 增删查改 就有
接着 新建一个类库Service 这里要去实现上面的接口
这个类库也要引用MongoDB的dll 还是
打开程序包管理器控制台
不要忘记更改默认项目
PM> Install-package mongocsharpdriver
等待一会
已安装“mongocsharpdriver 1.8.3”。
已成功将“mongocsharpdriver 1.8.3”添加到 Service。
PM>
首先先实现 上面的 基类
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Core.Repository; using Core.Service; using Model; using MongoDB.Driver; using MongoDB.Driver.Builders; namespace Service { public class CrudService<T> : ICrudService<T> where T : Entity, new() { protected IRepo<T> mongoRepo; public CrudService() { this.mongoRepo = new Data.MongoDB.MongoRepo<T>(); } public CrudService(IRepo<T> mongoRepo) { this.mongoRepo = mongoRepo; } #region MongoDB操作 public virtual long Add(T e) { var a = mongoRepo.Add(e); return a.ID; } public virtual void Add(IEnumerable<T> items) { foreach (T item in items) { Add(item); } } public virtual void Update(T item) { mongoRepo.Update(item); } public virtual void Delete(long id) { mongoRepo.Delete(mongoRepo.Single(id)); } public virtual void DeleteAll() { mongoRepo.DeleteAll(); } public virtual long Count() { return mongoRepo.Count(); } public virtual T Single(long id) { return mongoRepo.Single(id); } public virtual IEnumerable<T> GetAll() { return mongoRepo.All(); } public virtual IEnumerable<T> Where(Expression<Func<T, bool>> predicate) { return mongoRepo.Where(predicate); } public virtual IEnumerable<T> Where(IMongoQuery query) { return mongoRepo.Find(query); } /// <summary> /// 分页,通过Skip调过前几页的数据 /// </summary> /// <param name="query">查询条件</param> /// <param name="f">显示字段</param> /// <param name="s">排序字段</param> /// <param name="curPage">当前页</param> /// <param name="pageNum">每页数据条数</param> /// <returns></returns> public IEnumerable<T> GetPageList(IMongoQuery query, IMongoFields f, IMongoSortBy s, int curPage, int pageNum) { return mongoRepo.Find(query).SetFields(f).SetSortOrder(s).SetSkip((curPage - 1) * pageNum).SetLimit(pageNum); } /// <summary> /// 分页,通过LastMaxId取数 /// </summary> /// <param name="query">查询条件</param> /// <param name="f">显示字段</param> /// <param name="s">排序字段</param> /// <param name="curPage">当前页</param> /// <param name="pageNum">每页数据条数</param> /// <returns></returns> public IEnumerable<T> GetPageList(IMongoQuery query, IMongoFields f, IMongoSortBy s, int curPage, int pageNum, int lastMaxId) { return mongoRepo.Find(Query.And(Query.GT("_id", lastMaxId), query)).SetFields(f).SetSortOrder(s).SetLimit(pageNum); } #endregion } }
这里同上面的接口 一样 去继承就ok
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Core.Repository; using Core.Service; using Model; namespace Service { public class ClassificationService : CrudService<Classification>, IClassificationService { public ClassificationService() : base() { } public ClassificationService(IRepo<Classification> mongoRepo) : base(mongoRepo) { } /// <summary> /// 通过主键ID得到实体 /// </summary> /// <param name="userid"></param> /// <returns></returns> public Classification GetClassification(long id) { return mongoRepo.Single(id); } } }

浙公网安备 33010602011771号