【EF Core】EFCore 8.0 -CodeFirst方式生成SQLite实体对象
EFCoreFirst使用流程
1、引入工具包
Microsoft.EntityFrameworkCore.SqlServer 核心程序包,封装了关键的核心代码,使用EF必须引用这个包
Microsoft.EntityFrameworkCore.Design 设计包,用于在命令行工具下EF Core开发的工具套件
Microsoft.EntityFrameworkCore.Tools 用于数据库的生成、迁移、生成表等
2、数量掌握EF core 模型配置
使用Data annotations 配置模型详细请看: https://learn.microsoft.com/zh-cn/ef/ef6/modeling/code-first/data-annotations
使用 fluent API 配置模型:https://learn.microsoft.com/zh-cn/ef/core/modeling/
尽管它们非常灵活,但请记住,DataAnnotations 仅提供你可以对 Code First 类进行的最常用的配置更改。 若要为某些边缘情况配置类,应该查看备用配置机制,即 Code First 的 Fluent API。
3.创建数据库实体
public class Blog { public int BlogId { get; set; } [Required] [MaxLength(16)] public string Url { get; set; } public List<Post> Posts { get; } = new List<Post>(); }
public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } [Column(TypeName = "date")] public DateTime CreateDate { get; set; } public int BlogId { get; set; } public Blog Blog { get; set; } }
2.新建一个继承DbContext的类作用是配置数据连接、操作数据库表等信息
public class BloggingContext: DbContext { /// <summary> /// Blogs表的操作属性 /// </summary> public DbSet<Blog> Blogs { get; set; } /// <summary> /// Posts /// </summary> public DbSet<Post> Posts { get; set; } /// <summary> /// 配置数据连接信息 /// </summary> /// <param name="optionsBuilder"></param> protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql("你的数据库连接字符串"); base.OnConfiguring(optionsBuilder); } }
3、 添加 App.Config 文件,App.config设置生成数据库的保存的位置(相对位置)
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings > <!--|DataDirectory| 表示相对目录 --> <add name="SqliteConnection" connectionString="Data Source=.\Resources\Data\text.db;" providerName="system.Data.SQLite"/> </connectionStrings> </configuration>
4、wpf 窗体代码
using IndividualQAlibrary.MVVM.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace IndividualQAlibrary.MVVM.Views { /// <summary> /// QAlibraryView.xaml 的交互逻辑 /// </summary> public partial class QAlibraryView : Window { public QAlibraryView() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { BloggingContext test = new BloggingContext(); test.Database.EnsureCreated(); } } }
点击按钮后生成数据库
5、生成 数据库
编程是个人爱好