龙空技术网

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

智慧小网迷 223

前言:

目前同学们对“ef添加数据”可能比较看重,大家都想要分析一些“ef添加数据”的相关内容。那么小编在网摘上网罗了一些对于“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);

}

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

标签: #ef添加数据