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