• EntityFramework经典数据访问层基类——增删改查


    namespace StudentSys.DAL
    {
        public class BaseService<T>:IDisposable where T:BaseEntity,new()
        {
            protected readonly StudentContext _db;
            public BaseService(StudentContext studentContext)
            {
                _db = studentContext;
            }
            /// <summary>
            /// 增加
            /// </summary>
            /// <param name="t"></param>
            /// <param name="commitNow">是否立即提交</param>
            /// <returns></returns>
            public async Task CreateAsync(T t,bool commitNow=true)
            {
                _db.Set<T>().Add(t);
                if (commitNow)
                    await _db.SaveChangesAsync();
            }
            /// <summary>
            /// 修改
            /// </summary>
            /// <param name="t"></param>
            /// <param name="commitNow"></param>
            /// <returns></returns>
            public async Task ModifyAsync(T t,bool commitNow = true)
            {
                _db.Entry<T>(t).State = System.Data.Entity.EntityState.Modified;
                if (commitNow)
                    await _db.SaveChangesAsync();
            }
            /// <summary>
            /// 删除
            /// </summary>
            /// <param name="id">用户ID</param>
            /// <param name="commitNow"></param>
            /// <returns></returns>
            public async Task DeleteAsync(Guid id, bool commitNow = true)
            {
                T t = new T
                {
                    Id = id,
                };
                _db.Entry(t).State = System.Data.Entity.EntityState.Unchanged;
                t.IsRemove = true;//修改为已删除
                if (commitNow)
                    await _db.SaveChangesAsync();
            }
            /// <summary>
            /// 查所有的没有被删除的
            /// </summary>
            /// <returns></returns>
            public IQueryable<T> GetAll()
            {
                return _db.Set<T>().AsNoTracking().Where(m => !m.IsRemove);
            }
            /// <summary>
            /// 根据ID查找
            /// </summary>
            /// <returns></returns>
            public async Task<T> GetAsync(Guid id)
            {
                return await GetAll().FirstAsync(m => m.Id == id);
            }
            public void Dispose()
            {
                _db.Dispose();
            }
        }
    }

    删除实际是修改数据的某属性,根据此属性判断是否查询出来,一个真正的项目,不应该存在删除数据库数据的操作。

  • 相关阅读:
    使用PowerDesigner创建表并导入到数据库
    第二次作业——结对项目之需求分析与原型模型设计
    使用Git进行代码管理
    常用
    头文件
    只出现一次的数
    链表实现基础排序算法
    判断链表有公共点
    单链表判环
    二叉树非递归遍历
  • 原文地址:https://www.cnblogs.com/qwqwQAQ/p/11570055.html
Copyright © 2020-2023  润新知