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、生成 資料庫