.NET Core+WebApi+EF訪問數據新增用戶數據

新建一個.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。下載地址://www.postman.com/

 

以上操作就是數據新增成功了。。。

我也是剛剛了解.NET Core先上手玩玩,如果以上代碼存在誤區請註明,一起學習。謝謝!