• .net core实现efcore增删改查


    前面在项目中添加了Efcore,现在使用它进行增删改查

    新建类库NetCoreDemo.Services

    添加接口IBaseService

    public interface IBaseService
        {
            T Find<T>(string id) where T:class;
    
            IQueryable<T> Query<T>(Expression<Func<T, bool>> express) where T : class;
    
            T Insert<T>(T t) where T : class;
    
            IEnumerable<T> Insert<T>(IEnumerable<T> tList) where T : class;
    
            void Delete<T>(T t) where T : class;
    
            void Delete<T>(IEnumerable<T> tList) where T : class;
    
            void Update<T>(T t) where T : class;
    
            void Commit();
        }

    添加实现

    public class BaseService:IBaseService
        {
            protected DbContext Context { get; private set; }
    
            public BaseService(DbContext context)
            {
                Context = context;
            }
    
            public T Find<T>(string id) where T : class
            {
                return this.Context.Set<T>().Find(id);
            }
    
            public IQueryable<T> Query<T>(Expression<Func<T, bool>> express) where T : class
            {
                return this.Context.Set<T>().Where<T>(express);
            }
    
            public T Insert<T>(T t) where T : class
            {
                this.Context.Set<T>().Add(t);
                this.Commit();
                return t;
            }
    
            public void Delete<T>(T t) where T : class
            {
                this.Context.Set<T>().Remove(t);
                this.Commit();
            }
    
            public void Update<T>(T t) where T : class
            {
                this.Context.Update(t);
                this.Commit();
            }
    
            public void Commit()
            {
                this.Context.SaveChanges();
            }
    
            public IEnumerable<T> Insert<T>(IEnumerable<T> tList) where T : class
            {
                this.Context.Set<T>().AddRange(tList);
                this.Commit();
                return tList;
            }
    
            public void Delete<T>(IEnumerable<T> tList) where T : class
            {
                foreach(var t in tList)
                {
                    this.Context.Set<T>().Attach(t);
                }
                this.Context.Set<T>().RemoveRange(tList);
                this.Commit();
            }
        }

    添加业务接口IUserService和UserService

    public class UserService:BaseService,IUserService
        {
            public UserService(DbContext context) : base(context) { }
        }

    主项目使用

    在startup.cs中添加

                #region 注册接口实现
                services.AddTransient<DbContext, MyDbContext>();
                services.AddTransient<IUserService, UserService>();
                #endregion

    在控制器中

            private readonly IUserService _userService;
    
    
            public FirstController(ILogger<FirstController> logger, IUserService userService)
            {
                ...
                _userService = userService;
            }

              public IActionResult Users()
              {
                  var user=_userService.Find<UserInfo>("2564564");
                  return View(user);
              }

    
    

    在视图上

    @model NetCoreDemo.EF.Models.UserInfo
    
    
    <h1>@Model.Age    @Model.Address</h1>
    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    C语言初学者应该知道的(一)
    【文摘】中国IT从业者的职业——软件项目管理师
    只有荒凉的沙漠,没有荒凉的人生 ——黄渤
    定时更改桌面背景
    C语言初学者应该知道的(二)
    整理那些书
    Linux操作系统———李纳斯
    【c笔记】一个很好的编程题
    【c 笔记】windows的wsprintf不支持浮点型的%f
    【文摘】中国IT从业者的职业——软件测试员
  • 原文地址:https://www.cnblogs.com/AduBlog/p/14873059.html
Copyright © 2020-2023  润新知