前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在UWP项目中使用Entity Framework (20210505)

在UWP项目中使用Entity Framework (20210505)

原创
作者头像
ZhangYang
修改2021-05-06 10:26:46
5590
修改2021-05-06 10:26:46
举报
文章被收录于专栏:多能鄙事多能鄙事

编辑环境:

  • Windows 10
  • Microsoft Visual Studio Community 2019 Version 16.9.4

要点

  • Class Library项目创建是选择:.NET Standard 2.0;
  • EntityFramework相关包的版本号应当小于3.0.0;
  • 现在UWP项目中添加对Class Library的引用,然后再修改Class Library的项目文件;

重要代码片段

代码语言:yaml
复制
<TargetFrameworks>netcoreapp2.0;netstandard2.0</TargetFrameworks>

代码语言:yaml
复制
<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

代码语言:c#
复制
using(var db =new DataServices.DbContexts.BloggingContext())
{
    db.Database.Migrate();
}

代码链接:scirem/EntityFrameworkLovesUWP (github.com)

创建步骤

创建UWP项目(EntityFrameworkTutorial)

设置支持的平台版本号:

添加 .Net Standard Class Library项目(DataServices)

设置目标框架版本号为 .NET Standard 2.0:

在UWP项目中添加对Class Library项目的引用

在Class Libraryz中添加对Entity Framework的引用

Entity Framework相关的包包括:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.Tools

需要注意,这些包的版本号要选择小于3.0.0的。

在Class Library中创建数据库模型

对于的文件内容如下:

BloggingContext.cs

代码语言:c#
复制
using DataServices.Models;
using Microsoft.EntityFrameworkCore;

namespace DataServices.DbContexts
{
    public class BloggingContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
        {
            options.UseSqlite(@"Data Source=blogging.db");
        }
    }
}

Blog.cs

代码语言:c#
复制
using System.Collections.Generic;

namespace DataServices.Models
{
    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }

        public List<Post> Posts { get; } = new List<Post>();
    }
}

Post.cs

代码语言:c#
复制
namespace DataServices.Models
{
    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }

        public int BlogId { get; set; }
        public Blog Blog { get; set; }
    }
}

编辑Class Library的项目文件

可以通过直接双击DataServices或者右键选择“Edit Project File”来编辑:

编辑前的文件内容如下:

代码语言:yaml
复制
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

需要做的编辑是:

  1. 将“TargetFramework“标签改为”TargetFrameworks"标签;
  2. 将“TargetFrameworks”标签的内容改为“netcoreapp2.0;netstandard2.0”。

编辑后的文件内容如下:

代码语言:yaml
复制
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netcoreapp2.0;netstandard2.0</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.2.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.2.6">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

将Class Library项目设置为启动项目

添加迁移

打开Package Manager Console

在Package Manager Console中将 DataServices 设置为默认项目

生成数据库

代码语言:shell
复制
Add-Migration Initialization

UWP中使用Entity Framework

在UWP中初始化数据库

代码语言:c#
复制
public App()
{
    this.InitializeComponent();
    this.Suspending += OnSuspending;

    using (var db = new DataServices.DbContexts.BloggingContext())
    {
        db.Database.Migrate();
    }
}

在OnLaunched函数中查看生成的数据库的位置

代码语言:c#
复制
var local = Windows.Storage.ApplicationData.Current.LocalFolder;
System.Diagnostics.Debug.WriteLine("Database: " + local.Path);

将UWP项目设置为启动项目

编译运行后,即可看到生成的数据库文件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编辑环境:
  • 要点
  • 重要代码片段
  • 创建步骤
    • 创建UWP项目(EntityFrameworkTutorial)
      • 设置支持的平台版本号:
    • 添加 .Net Standard Class Library项目(DataServices)
      • 设置目标框架版本号为 .NET Standard 2.0:
    • 在UWP项目中添加对Class Library项目的引用
      • 在Class Libraryz中添加对Entity Framework的引用
        • 在Class Library中创建数据库模型
          • BloggingContext.cs
            • Blog.cs
              • 编辑Class Library的项目文件
                • 将Class Library项目设置为启动项目
                  • 添加迁移
                    • 打开Package Manager Console
                    • 在Package Manager Console中将 DataServices 设置为默认项目
                    • 生成数据库
                  • UWP中使用Entity Framework
                    • 在UWP中初始化数据库
                    • 在OnLaunched函数中查看生成的数据库的位置
                    • 将UWP项目设置为启动项目
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com