欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【UWP】自带的EntityFrameWorkCore数据库(新数据库)的配置教程

程序员文章站 2023-12-28 12:04:52
...
前言

之前UWP课程中曾经配置了一下EFCORE数据库,当时爬这个坑爬了将近能有三天,现在整理一下配置顺序,原来用来记录的txt文件是用英文记录的,这边稍微整理一下吧。

Notes

建议配合官方文档食用
官方文档入口:https://docs.microsoft.com/en-us/ef/core/get-started/uwp/getting-started

正文
Part1 : 数据库的创建
  • 创建一个UWP解决方案
  • 在你的项目中创建一个 .net Standard 文件,同时将它作为解决方案中的启动项目
    (set it as the ‘StartUP’ project under the same solution)
  • 打开Nuget管理器,在控制台执行 Install-Package Microsoft.EntityFrameWorkCore.Sqlite
  • 在控制台执行 Install-Package Microsoft.EntityFrameWorkCore.tools
  • 右键新创建的EFCORE文件中项目根目录(位置如下图),点击“编辑.csproj文件”
    【UWP】自带的EntityFrameWorkCore数据库(新数据库)的配置教程
    在其中的<TargetFrameworks> 处,ctrl+c & ctrl+v以下代码(覆盖该对应行)
    <TargetFrameworks>netcoreapp2.0;netstandard2.0</TargetFrameworks> 
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
  • net中的数据库与一般的E-R数据库有点类似,数据以类为单位存储,每个类成员(字段)对应的就是我们关系型数据库中的每个表的表项,此处仅以学生-选课-课程模型中的学生表为例:

    student.class

using System;
    using System.ComponentModel.DataAnnotations;
    using Microsoft.EntityFrameworkCore;

    namespace DB
    {
        public class Student
        {

            public int ID { get; set; }
            public string Number { get; set; }
            public string Name { get; set; }
            public int grade { get; set; }
        }
        public class StudentContext : DbContext
        {
            public DbSet<Student> Students { get; set; }
            protected override void OnConfiguring(DbContextOptionsBuilder builder)
            {
                builder.UseSqlite("Data Source = student.db");
            }
        }
    }
  • 打开控制台,在控制台执行 Add-Migration [MigrationName]
  • 重新打开我们刚刚打开的.csproj文件,将刚刚我们修改的<TargetFrameworks> 标签修改为
<TargetFrameworks>netstandard2.0</TargetFrameworks> 

(注意,<GenerateRuntimeConfigurationFiles> 标签对不需要修改

  • 在UWP项目中添加对.net项目的引用
  • 添加以下代码于app.xaml.cs(需添加处增加了备注**):

    using Microsoft.EntityFrameworkCore;//**
    using System;
    using Windows.ApplicationModel;
    using Windows.ApplicationModel.Activation;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Navigation;
    
    namespace EFGetStarted.UWP
    {
        /// <summary>
        /// Provides application-specific behavior to supplement the default Application class.
        /// </summary>
        sealed partial class App : Application
        {
            /// <summary>
            /// Initializes the singleton application object.  This is the first line of authored code
            /// executed, and as such is the logical equivalent of main() or WinMain().
            /// </summary>
            public App()
            {
                this.InitializeComponent();
                this.Suspending += OnSuspending;
    
                using (var db = new studentContext())//**
                {//**
                    db.Database.Migrate();//**
                }//**
            }
            ...


PART2 : 在UWP中进行增删查改
  • 将UWP项目设为启动项目(set it as the ‘start-up’ project)
  • 增删查改样例代码如下:
    //新增数据
     private async void add_Click(object sender, RoutedEventArgs e)
        {
            using (var db = new Model())
            {
                Student s = new Student
                {
                    ID = (int) DateTime.Now.Ticks,
                    Name = name.Text,
                    Number = number.Text,
                    grade = int.Parse(score.Text)
                };
                db.Students.Add(s);
                await db.SaveChangesAsync();
            }
        }

    //查询数据
        private async void query_Click(object sender, RoutedEventArgs e)
        {
            using (var db = new Model())
            {
                member.Text = (await db.Students.CountAsync()).ToString();
            }
        }

    //数据删除
        private void delete_Click(object sender, RoutedEventArgs e)
        {
            using (var db = new Model())
            {
                db.Database.Migrate();
            }
        }
  • 开始你的新数据库使用之旅吧!


References:
  1. 官方文档
    https://docs.microsoft.com/en-us/ef/core/get-started/uwp/getting-started
  2. Special Thanks to the first user giving feedback under the official document, though the feedbacks under the document is closed now without a reason why :(
  3. My Teacher Professor Zhang Yin
    http://faculty.neu.edu.cn/cse/zhangyin/

上一篇:

下一篇: