zoukankan      html  css  js  c++  java
  • .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>
    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    windows 2008 r2 开启互访和网络发现
    uchome 模拟发布动态和通知遇到的问题
    远程无法连接win2003的mssql2000服务器
    cidaemon.exe进程占用CPU资源的解决办法
    asp.net如何生成图片验证码
    SQL Server中截取日期型字段的日期部分和时间部分
    刷新项目失败。无法从服务器中检索文件夹信息。
    CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\***.dll”错误处理
    Computer Browser服务启动后自动停止
    FCK使用 体会
  • 原文地址:https://www.cnblogs.com/AduBlog/p/14873059.html
Copyright © 2011-2022 走看看