项目使用多层,把数据库访问层,单独放到DAL层里
一:新建好项目与类库, 并添加好EF依赖
然后在dll层添加好ef的依赖,可以使用Nuget包下载,我们这里使用在DAL.csproj里边配置依赖
自动下载 Microsoft.EntityFrameworkCore.SqlServer
自动下载完依赖后可以在依赖项中看到
二:在DAL层添加好model与上下文对象
Users.cs:
public class Users { public int Id { get; set; } public string UserName { get; set; } public string Address { get; set; } public int Age { get; set; } }
MyDataContext:
public class MyDataContext : DbContext { public MyDataContext(DbContextOptions<MyDataContext> options) : base(options) { } public DbSet<Users> Users { get; set; } }
三:在第一层中添加好EF的依赖注入
public void ConfigureServices(IServiceCollection services) { // Add framework services. //添加ef的依赖 var connection = "server=.;uid=sa;pwd=123456;database=codefirst"; services.AddDbContext<MyDataContext>(options => options.UseSqlServer(connection)); services.AddMvc(); }
第一层中也需要引用名称空间 using Microsoft.EntityFrameworkCore
因为UseSqlServer这个扩展方法是在这个依赖里边的
四:使用命令通过代码生成数据库
先输入:Add-Migration MyFirstMigration(名字)
在输入:Update-Database
执行成功后就会更具你配置的连接字符串与model去生成数据库
执行命令可能遇到的错误
这个是因为执行这个命令还需要一个依赖,在DAL.cspoj中配置好就行
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" />
五:直接在控制器中使用EF
private MyDataContext _context; public HomeController(MyDataContext context) //依赖注入得到实例 { _context = context; } public IActionResult Index() { //使用ef添加一条数据 Users us = new Users(); us.UserName = "xp"; us.Age = 26; us.Address = "jk"; _context.Users.Add(us); _context.SaveChanges(); return View(); }
六:在DAL层中使用EF
操作数据库的还是应该放到数据库访问层,而不是直接在控制器里边去写
在DAL层中添加接口IUserDAL
public interface IUserDAL { void Insert(); }
UserDAL 中去实现IUserDAL并使用EF操作数据库
public class UserDAL: IUserDAL { private MyDataContext _context; public UserDAL(MyDataContext context) //依赖注入得到ef实例 { _context = context; } public void Insert() { //使用ef添加一条数据 Users us = new Users(); us.UserName = "xp"; us.Age = 26; us.Address = "jk"; _context.Users.Add(us); _context.SaveChanges();//保存到数据库 } }
Startup.cs中配置好DAL层的依赖注入关系
services.AddTransient<IUserDAL,UserDAL>();
控制器中借助DAL层去实现数据库访问
private IUserDAL _iud; public HomeController(IUserDAL iud) //依赖注入得到DAL层实例 { _iud = iud; } public IActionResult Index() { //添加数据 _iud.Insert(); return View(); }
免责声明:文章源自网络,版权归原作者所有,如有侵犯联系删除。