.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先上手玩玩,如果以上程式碼存在誤區請註明,一起學習。謝