当前位置:   article > 正文

EF Core入门例子(以SqLite为数据库)

EF Core入门例子(以SqLite为数据库)

测试环境:

visual studio 2017

.net core 2.1 

具体步骤如下:

1 新增名称为EFCoreDemo的.net core控制台程序,版本选择.net core 2.1,项目不能放到带中文的目录下,不然到后面执行Add-Migration命令时会报如下的错误

同时,如果这个解决方案有多个项目,一定要把当前项目设为启动项目,且程序包管理器控制台默认项目一定要选对,不然到后面执行Add-Migration命令时会报如下的错误:

2  利用Nuget安装Microsoft.EntityFrameworkCore.Sqlite,版本选择2.2.6及安装Microsoft.EntityFrameworkCore.Tools,版本选择2.2.6,如下图:

(注意:安装Microsoft.EntityFrameworkCore.Sqlite时,会把EF Core对应的依赖包Microsoft.EntityFrameworkCore等都自动安装上,不用再单独安装   ,如果数据库是Sql Server,则安装Microsoft.EntityFrameworkCore.SqlServer)

3  新增实体类Student,并编辑如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace EFCoreDemo
  5. {
  6. public class Student
  7. {
  8. public long Id { set; get; }
  9. public string Name { set; get; }
  10. }
  11. }

4  新增Student类对应的配置类StudentConfig,并编辑如下:

  1. using Microsoft.EntityFrameworkCore;
  2. using Microsoft.EntityFrameworkCore.Metadata.Builders;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. namespace EFCoreDemo
  7. {
  8. public class StudentConfig : IEntityTypeConfiguration<Student>
  9. {
  10. public void Configure(EntityTypeBuilder<Student> builder)
  11. {
  12. builder.ToTable("Student");
  13. }
  14. }
  15. }

5  新增上下文类MyDbContext,并编辑如下:

  1. using Microsoft.EntityFrameworkCore;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. namespace EFCoreDemo
  6. {
  7. public class MyDbContext:DbContext
  8. {
  9. public DbSet<Student> Students { set; get; }
  10. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  11. {
  12. base.OnConfiguring(optionsBuilder);
  13. optionsBuilder.UseSqlite("Data Source=KnowledgeDataBase.sqlite;");
  14. }
  15. protected override void OnModelCreating(ModelBuilder modelBuilder)
  16. {
  17. base.OnModelCreating(modelBuilder);
  18. modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
  19. }
  20. }
  21. }

上面的的KnowledgeDataBase.sqlite为SqLite的数据库文件名称

6  打开程序包管理控制台,
   

6.1  输入命令:Add-Migration Init,如下图:

然后会在项目中自动生成目录Migrations,并自动3个类,不要动它们,如下图:

6.2  输入命令:Update-database,会执行更新,如下图:

由于用的是SqLite数据库,会在项目中生成一个名为
KnowledgeDataBase.sqlite的数据库文件,并设置为"始终复制",如下图:

7  主程序编辑如下:

  1. using System;
  2. using System.Linq;
  3. namespace EFCoreDemo
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. Student stu = new Student();
  10. stu.Name = "zxy";
  11. MyDbContext myDbContext = new MyDbContext();
  12. myDbContext.Add(stu);
  13. myDbContext.SaveChanges();
  14. var students=myDbContext.Students.Where(a => a.Name == "zxy");
  15. foreach (var item in students)
  16. {
  17. Console.WriteLine($"Id:{item.Id} Name:{item.Name}");
  18. }
  19. Console.WriteLine("执行完毕");
  20. Console.ReadLine();
  21. }
  22. }
  23. }

运行结果如下:

好了,本文的内容到此结束

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/58868
推荐阅读
相关标签
  

闽ICP备14008679号