.NET Core+WebApi+EF访问数据新增用户数据

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

.NET Core+WebApi+EF访问数据新增用户数据

CR7Ronaldo   2020-05-03 我要评论

新建一个.NET Core项目,我使用的IDE是VS2019

 依次创建三个Core类库:第一个命名api.Model,第二个api.Common,第三个api.Bo

 

解释一下这个三类库的作用:

第一个Model,主要存放一些数据库连接字符串,ORM实体类等

第二个Common,主要存放一些公共类,文件上传,md5加密文件等

第三个Bo,处理一些业务逻辑的事情,比如将用户信息存放到数据库,个人感觉类似于ASP的三层架构中的DAL层吧。。。

总体感觉这三个类库也与三层架构(UI层,DAL层,BLL层)的结构类似。。。

但是,对于这篇文章,个人感觉更主要的是处理数据,写接口。。。

接下来就是要引入相应的NuGet包了

Model:

 Bo:

这里暂时不需要用到Common

最后就是要添加类库直接的关联了

Model:

 Bo:

以上工作全部完成后项目目录模块如下:

编写数据库(SQL):

create database testDB
use testDB
go
create table [User]
(
    id int identity(1,1)not null,
    phone varchar(20),
    [password] nvarchar(50),
    msgCode varchar(10),
    regTime dateTime,
    nickName nvarchar(50),
    state int
)
go

建一个User类:

using System;
using System.Collections.Generic;
using System.Text;

namespace api.Model.TestEntities
{
    public partial class User
    {
        public int Id { get; set; }
        public string Phone { get; set; }
        public string Password { get; set; }
        public string MsgCode { get; set; }
        public DateTime? RegTime { get; set; }
        public string NickName { get; set; }
        public int? State { get; set; } 
    }
}

接下来就是通过datafirst的模式来处理数据

using Microsoft.EntityFrameworkCore;
namespace api.Model.TestEntities
{
    public partial class TestContext:DbContext
    {
        public TestContext()
        { 
        }
        public TestContext(DbContextOptions<TestContext> options) : base(options)
        { 
        
        }
        public virtual DbSet<User> User { get; set; }
        public static string ConStr { get; set; }
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                optionsBuilder.UseSqlServer(ConStr);
            }
            
        }
    }
}

在appsetting.json文件中配置数据库连接字符串:

Server="服务器名称;User Id=数据库登录名;Password=密码;Database=数据库名称

 在Startup.cs在文件中获取数据库连接字符串:

在Model中创建User文件夹并添加两个类:

 AddUserP:主要是用于接收客户端传递的数据后添加到数据库中:

namespace api.Model.User
{
    public class AddUserP
    {
        public string phone { get; set; }
        public string password { get; set; }
        public string nickName { get; set; }
        public int state { get; set; }
        public string sign { get; set; }
    }
}

AddUserR:复制将信息返回给客户端:

namespace api.Model.User
{
    public class AddUserR
    {
        public int code { get; set; }
        public string messages { get; set; }
    }
}

在Bo类库下创建UserBo类连接数据库通过ef LinQ实现往数据里面添加数据。

别忘记引入using System.Linq;命名空间,不然会报“DbSet<User> 查询模式找不到”的错误

using System.Linq; 
namespace api.Bo
{
    public class UserBo
    {
        public static Model.TestEntities.TestContext db = new Model.TestEntities.TestContext();

        /// <summary>
        /// 增加用户 --> 接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static Model.User.AddUserR AddUser(Model.User.AddUserP model)
        {
            var r = new Model.User.AddUserR();
            Model.TestEntities.User userSearch = (from u in db.User where u.Phone == model.phone select u).FirstOrDefault();
            if (userSearch==null)
            {
                Model.TestEntities.User user = new Model.TestEntities.User();
                user.Phone = model.phone;
                user.Password = model.password;
                user.NickName = model.nickName;
                user.State = model.state;
                db.User.Add(user);
                int i = db.SaveChanges();
                if (i > 0)
                {
                    r.code = 1;
                    r.messages = "数据插入成功";
                }
                else
                {
                    r.code = 0;
                    r.messages = "数据插入失败";
                }

            }
            else
            {
                r.code = 0;
                r.messages = "手机号已存在";
            }
            return r;
        }
    }
}

在Controllers文件夹下创建一个Userapi接口:

/// <summary>
/// 新增 --> 用户信息接口
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public IActionResult AddUser(api.Model.User.AddUserP model)
{
    var r =api.Bo.UserBo.AddUser(model);
    return Ok(r);
}

接下来就是要进行接口测试了,这里我使用的是postman。下载地址:https://www.postman.com/

 

以上操作就是数据新增成功了。。。

我也是刚刚了解.NET Core先上手玩玩,如果以上代码存在误区请注明,一起学习。谢谢!

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们