1. 程式人生 > >.NET Core+WebApi+EF訪問資料新增使用者資料

.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。下載地址:https://www.postman.com/

 

以上操作就是資料新增成功了。。。

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