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>
    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    http状态大全
    goaccess 分析日志
    laravel 初识
    mac 安装wget
    python 16进制转成中文
    zeromq安装---php-zmq
    Mac Yosemite 10.10 编辑mac的配置
    Mac Yosemite 10.10 下利用 Launchctl 自启动 mysql
    MacBook设置终端命令行的颜色高亮显示
    XPath 常用语法札记
  • 原文地址:https://www.cnblogs.com/AduBlog/p/14873059.html
Copyright © 2011-2022 走看看