.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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM