【EF Core】EFCore 8.0 -CodeFirst方式生成SQLite實體物件

小林野夫發表於2024-03-26

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

相關文章