首页 > 代码库 > The service base of EF I am using
The service base of EF I am using
using CapMon.Data;using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Data.Entity;using System.Linq.Expressions;using CapMon.Utilities;namespace CapMon.Business.Base{ public class ServiceBase<TObject> where TObject : class { protected CapMonEntities _context; public ServiceBase() { _context = new CapMonEntities(); } /// <summary> /// The contructor requires an open DataContext to work with /// </summary> /// <param name="context">An open DataContext</param> public ServiceBase(CapMonEntities context) { _context = context; } /// <summary> /// Returns a single object with a primary key of the provided id /// </summary> /// <remarks>Synchronous</remarks> /// <param name="id">The primary key of the object to fetch</param> /// <returns>A single object with the provided primary key or null</returns> public TObject Get(int id) { return _context.Set<TObject>().Find(id); } /// <summary> /// Returns a single object with a primary key of the provided id /// </summary> /// <remarks>Asynchronous</remarks> /// <param name="id">The primary key of the object to fetch</param> /// <returns>A single object with the provided primary key or null</returns> public async Task<TObject> GetAsync(int id) { return await _context.Set<TObject>().FindAsync(id); } /// <summary> /// Gets a collection of all objects in the database /// </summary> /// <remarks>Synchronous</remarks> /// <returns>An ICollection of every object in the database</returns> public ICollection<TObject> GetAll() { return _context.Set<TObject>().ToList(); } /// <summary> /// Gets a collection of all objects in the database /// </summary> /// <remarks>Asynchronous</remarks> /// <returns>An ICollection of every object in the database</returns> public async Task<ICollection<TObject>> GetAllAsync() { return await _context.Set<TObject>().ToListAsync(); } /// <summary> /// Returns a single object which matches the provided expression /// </summary> /// <remarks>Synchronous</remarks> /// <param name="match">A Linq expression filter to find a single result</param> /// <returns>A single object which matches the expression filter. /// If more than one object is found or if zero are found, null is returned</returns> public TObject Find(Expression<Func<TObject, bool>> match) { return _context.Set<TObject>().SingleOrDefault(match); } /// <summary> /// Returns a single object which matches the provided expression /// </summary> /// <remarks>Asynchronous</remarks> /// <param name="match">A Linq expression filter to find a single result</param> /// <returns>A single object which matches the expression filter. /// If more than one object is found or if zero are found, null is returned</returns> public async Task<TObject> FindAsync(Expression<Func<TObject, bool>> match) { return await _context.Set<TObject>().SingleOrDefaultAsync(match); } /// <summary> /// Returns a collection of objects which match the provided expression /// </summary> /// <remarks>Synchronous</remarks> /// <param name="match">A linq expression filter to find one or more results</param> /// <returns>An ICollection of object which match the expression filter</returns> public ICollection<TObject> FindAll(Expression<Func<TObject, bool>> match) { return _context.Set<TObject>().Where(match).ToList(); } /// <summary> /// Returns a collection of objects which match the provided expression /// </summary> /// <remarks>Asynchronous</remarks> /// <param name="match">A linq expression filter to find one or more results</param> /// <returns>An ICollection of object which match the expression filter</returns> public async Task<ICollection<TObject>> FindAllAsync(Expression<Func<TObject, bool>> match) { return await _context.Set<TObject>().Where(match).ToListAsync(); } /// <summary> /// Inserts a single object to the database and commits the change /// </summary> /// <remarks>Synchronous</remarks> /// <param name="t">The object to insert</param> /// <returns>The resulting object including its primary key after the insert</returns> public TObject Add(TObject t) { _context.Set<TObject>().Add(t); _context.SaveChanges(); return t; } /// <summary> /// Inserts a single object to the database and commits the change /// </summary> /// <remarks>Asynchronous</remarks> /// <param name="t">The object to insert</param> /// <returns>The resulting object including its primary key after the insert</returns> public async Task<TObject> AddAsync(TObject t) { _context.Set<TObject>().Add(t); await _context.SaveChangesAsync(); return t; } /// <summary> /// Inserts a collection of objects into the database and commits the changes /// </summary> /// <remarks>Synchronous</remarks> /// <param name="tList">An IEnumerable list of objects to insert</param> /// <returns>The IEnumerable resulting list of inserted objects including the primary keys</returns> public IEnumerable<TObject> AddAll(IEnumerable<TObject> tList) { _context.Set<TObject>().AddRange(tList); _context.SaveChanges(); return tList; } /// <summary> /// Inserts a collection of objects into the database and commits the changes /// </summary> /// <remarks>Asynchronous</remarks> /// <param name="tList">An IEnumerable list of objects to insert</param> /// <returns>The IEnumerable resulting list of inserted objects including the primary keys</returns> public async Task<IEnumerable<TObject>> AddAllAsync(IEnumerable<TObject> tList) { _context.Set<TObject>().AddRange(tList); await _context.SaveChangesAsync(); return tList; } /// <summary> /// Updates a single object based on the provided primary key and commits the change /// </summary> /// <remarks>Synchronous</remarks> /// <param name="updated">The updated object to apply to the database</param> /// <param name="key">The primary key of the object to update</param> /// <returns>The resulting updated object</returns> public TObject Update(TObject updated, int key) { if (updated == null) return null; TObject existing = _context.Set<TObject>().Find(key); if (existing != null) { _context.Entry(existing).CurrentValues.SetValues(updated); _context.SaveChanges(); } return existing; } /// <summary> /// Updates a single object based on the provided primary key and commits the change /// </summary> /// <remarks>Asynchronous</remarks> /// <param name="updated">The updated object to apply to the database</param> /// <param name="key">The primary key of the object to update</param> /// <returns>The resulting updated object</returns> public async Task<TObject> UpdateAsync(TObject updated, int key) { if (updated == null) return null; TObject existing = await _context.Set<TObject>().FindAsync(key); if (existing != null) { _context.Entry(existing).CurrentValues.SetValues(updated); await _context.SaveChangesAsync(); } return existing; } /// <summary> /// Deletes a single object from the database and commits the change /// </summary> /// <remarks>Synchronous</remarks> /// <param name="t">The object to delete</param> public void Delete(TObject t) { _context.Set<TObject>().Remove(t); _context.SaveChanges(); } /// <summary> /// Deletes a single object from the database and commits the change /// </summary> /// <remarks>Asynchronous</remarks> /// <param name="t">The object to delete</param> public async Task<int> DeleteAsync(TObject t) { _context.Set<TObject>().Remove(t); return await _context.SaveChangesAsync(); } /// <summary> /// Gets the count of the number of objects in the databse /// </summary> /// <remarks>Synchronous</remarks> /// <returns>The count of the number of objects</returns> public int Count() { return _context.Set<TObject>().Count(); } /// <summary> /// Gets the count of the number of objects in the databse /// </summary> /// <remarks>Asynchronous</remarks> /// <returns>The count of the number of objects</returns> public async Task<int> CountAsync() { return await _context.Set<TObject>().CountAsync(); } }}
The service base of EF I am using
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。