Net Core+SqlSugar

1.建立一个模型层,放Dome数据库的表

  1. 建立模型层
    先添加一个类库

先在我们的Model中引入库包 SqlSugarCore
这是关于SqlSugar的文档也可以先看看: link.
添加表数据 内联代码片

  public class User:BaseModel
    {
        [SugarColumn(IsPrimaryKey =true)]
        public Guid Id { get; set; }
        [SugarColumn(ColumnDataType = "nvarchar(30)")]
        public string Name { get; set; }
        [SugarColumn(ColumnDataType = "nvarchar(255)")]
        public string Password { get; set; }
     
    }

2.建立一个仓储层,用来进行对数据的访问

然后添加仓储层 直接放图吧
一个是接口,一个是实现
先看接口层的

我这边只是写了基类的接口 内联代码片。详细的可以在文档里也是有描述的。

   public interface IBaseRepository<T> where T:class,new()
    {
        Task<bool> Save(T item);
        Task<bool> Update(T item);
        Task<bool> Delete(int Id);
        Task<T> Get(int Id);
    }

这是文档对仓储层的表述

我放一些简单的增删改查,基本上文档上都有
这边的 ISqlSugarClient 如果你不引入SqlSugarCore,就会报错 ,其中 base.Context.DbMaintenance.CreateDatabase();
base.Context.CodeFirst.InitTables(
typeof(User),
typeof(books)
);这些只是创建数据库用的,执行过一次就可以注释掉了 内联代码片

 public BaseRepository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null
        {
            base.Context = DbScoped.SugarScope;
            base.Context.DbMaintenance.CreateDatabase();
            base.Context.CodeFirst.InitTables(
                typeof(User),
                typeof(books)
                );
        }

        public async Task<T> Get(int Id)
        {
            return await base.GetByIdAsync(Id);
        }

        public async Task<bool> Save(T item)
        {
            return await base.InsertAsync(item);
        }

        public virtual async Task<bool> Update(T item) 
        {
            try
            {
                return await base.UpdateAsync(item);
            }
            catch (Exception e)
            {

                throw;
            }
         
        }

        public async  Task<bool> Delete(int Id)
        {
            return await base.DeleteByIdAsync(Id);
        }
    }

3.在Api这边设置注入

然后就需要回到我们的API开始注册 依赖了
下面展示一些 内联代码片
首先我们先对SqlSugar进行注入,不然仓储层那边就会报错

 services.AddSqlSugar(new IocConfig()
            {
                ConnectionString = Configuration["ConnectionStrings:Server"],
                DbType = IocDbType.SqlServer,
                IsAutoCloseConnection = true//自动释放
            });

ConnectionStrings:Server是数据库连接字符串我放到了Json中
其中Library就是我们要创建的数据库名称,首先我们数据库是没有这个库的 内联代码片

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": { "Server": "Data Source=.;Initial Catalog=Library;User ID=sa;Password=123456" }
}

然后接下来就是对仓储层的依赖
接口在前,实现在后内联代码片

 			service.AddTransient<IbookRepository,bookRepository>();
            service.AddTransient<IBookService, BookService>();

最后我贴一个api控制器的
下面展示一些 内联代码片
BaseResponse是我自己定义的传输基类

  [Route("api/[controller]")]
    [ApiController]
    public class BookController : ControllerBase
    {
        public readonly IBookService _BookService;
        public BookController(IBookService bookService) {
            _BookService = bookService;
        }
        [HttpPost]
        public async Task<BaseResponse<bool>> Save(BookModel Item)
        {
            var book = new books()
            {
                Name = Item.Name,
                Author = Item.Author,
                Creater = new Guid(),
                CreateDate=DateTime.Now
            };
            var result = await _BookService.Save(book);
            return new BaseResponse<bool>(result.Code, result.Message,result.Result);
        }
        [HttpGet("GetList")]
        public async Task<BaseResponse<List<books>>> GetList(string Name, int PageIndex, int PageSize)
        {
            var result = await _BookService.GetList(Name, PageIndex, PageSize);
            return new BaseResponse<List<books>>(result.Code, result.Message, result.Result);
        }
        /// <summary>
        /// 查询详情
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        [HttpGet("Get")]
        public async Task<BaseResponse<books>> Get(int Id)
        {
            var result = await _BookService.Get(Id);
            return new BaseResponse<books>(result.Code, result.Message, result.Result);
        }
        [HttpPut]
        public async Task<BaseResponse<bool>> Update(BookModel Item)
        {
            var list = await _BookService.Get(Item.Id);
            if (list.Code.Equals(200))
            {
                var book = new books()
                {
                    Id = Item.Id,
                    Name = Item.Name,
                    Author = Item.Author,
                    Update = new Guid(),
                    UpdateDate = DateTime.Now
                };
                var result = await _BookService.Update(book);
                return new BaseResponse<bool>(result.Code, result.Message, result.Result);
            }
            return new BaseResponse<bool>(list.Code, list.Message, false);
        }
    }

主要给前端发送需要的信息 内联代码片

  public  class BaseResponse<T>
    {
        public BaseResponse(int _Code, string _Message,T _Item)
        {
            this.Code = _Code;
            this.Message = _Message;
            this.Item = _Item;
        }

        public int Code { get; set; }
        public string Message { get; set; }
        public T Item { get; set; }
    }

最后应该没有什么了
跑一遍界面吧
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值