前言:
目前同学们对“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添加数据