关于程序员:EF-Core-快速入门教程

42次阅读

共计 3213 个字符,预计需要花费 9 分钟才能阅读完成。

EF Core 根底概念

概念

EF Core 全称是 Entity Framework Core,可应用 EF Core 开发面向 .NET Core 的利用,EF Core 同时反对在 Visual StudioVisual Studio for Mac 或 Visual Studio Code 等环境下开发。尽管 EF CORO 同样反对在 Xamarin 和.Net Native 上实现运行,然而存在运行限度,可能会影响 EF Core 解决的效率,暂不举荐应用。

技术纲要

Entity Framework (EF) Core 是轻量化、可扩大、开源和跨平台版的罕用 Entity Framework 数据拜访技术。

EF Core 可用作对象关系映射程序 (O/RM),这能够实现以下两点:

  • 使 .NET 开发人员可能应用 .NET 对象解决数据库。
  • 无需再像通常那样编写大部分数据拜访代码。

EF Core 反对多个数据库引擎。

获取 Entity Framework Core 运行时

举例:装置或更新 EF Core SQL Server 的路径

三种路径

  • NET Core CLI (控制台命令行操作页面可执行)

    • 执行“dotnet add package Microsoft.EntityFrameworkCore.SqlServer”该指令
    • 能够应用 -v 修饰符在 dotnet add package 命令中指明特定的版本。例如,若要装置 EF Core 2.2.0 包,请将 -v 2.2.0 追加到命令中。
  • Visual Studio NuGet 包管理器对话框

    • 从 Visual Studio 菜单中选择“我的项目”>“治理 NuGet 包”
    • 单击“浏览”或“更新”选项卡
    • 若要装置或更新 SQL Server 提供程序,请抉择 Microsoft.EntityFrameworkCore.SqlServer 包并确认。
  • Visual Studio NuGet 包管理器控制台

    • 从 Visual Studio 菜单中选择“工具”>“NuGet 包管理器”>“包管理器控制台”
    • Install-Package Microsoft.EntityFrameworkCore.SqlServer
    • 若要更新提供程序,应用 Update-Package 命令。
    • 若要指定特定版本,能够应用 -Version 修饰符。例如,若要装置 EF Core 2.2.0 包,请将 -Version 2.2.0 追加到命令中。

EF CORE 实操内容

模型

对于 EF Core,应用模型执行数据拜访。模型由实体类和示意数据库会话的上下文对象 DBContext 形成。上下文对象容许查问并保留数据。

EF 反对以下模型开发方法:

  • 从现有数据库生成模型。
  • 对模型手动编码,使其合乎数据库。
  • 创立模型后,应用 EF 迁徙从模型创立数据库。模型发生变化时,迁徙可让数据库一直演进。

EF 中的重要元素 DBContext

DbContext 是实体类和数据库之间的桥梁,DbContext 次要负责与数据交互,次要作用:

  • DBContext 蕴含所有实体映射到数据库的实体集【DbSet<TEntity>
  • DBContext 将 LINQ TO Entities 查问转换成 DBServer 意识的 SQL 语句
  • DBContext 跟踪实体从数据库中查问进去后产生的批改变动
  • DBContext 反对长久化数据库

如下图所示

DBContext 具体介绍

DBContext 是一个实现上述性能,天然类体积较大,截取局部办法展现如下:

如下展现一段代码以便更好了解:


using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;

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

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
        }
    }

    public class Blog
    {public int BlogId { get; set;}
        public string Url {get; set;}
        public int Rating {get; set;}
        public List<Post> Posts {get; set;}
    }

    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;}
    }
}

查问

应用语言集成查问 (LINQ) 从数据库检索实体类的实例。其中,where 和 Orderby 两个办法并不执行数据库操作 这里重点阐明一下,只有 ToList 这个操作,才会真正去数据库执行查问。

using (var db = new BloggingContext())
{
    var blogs = db.Blogs
        .Where(b => b.Rating > 3)
        .OrderBy(b => b.Url)
        .ToList();}

保留数据

应用实体类的实例在数据库中创立、删除和批改数据。

using (var db = new BloggingContext())
{var blog = new Blog { Url = "http://sample.com"};
    db.Blogs.Add(blog);
    db.SaveChanges();}

EF O/RM 注意事项

尽管 EF Core 善长提取许多编程详细信息,但还是有一些实用于任何 O/RM 的最佳做法,可帮忙防止生产利用中的常见陷阱:

  • 若要在高性能生产利用中构建、调试、剖析和迁徙数据,必须具备根底数据库服务器的中级常识或更高级别的常识。例如,无关主键和外键、束缚、索引、标准化、DML 和 DDL 语句、数据类型、剖析等方面的常识。
  • 性能和集成测试:请务必尽可能紧密地复制生产环境,以便:

    • 查找仅在应用特定版本的数据库服务器时才呈现的问题。
    • 在降级 EF Core 和其余依赖项时捕捉中断性变更。例如,增加或降级 ASP.NET Core、OData 或 Automapper 等框架。这些依赖项可能以多种意外形式影响 EF Core。
  • 通过代表性负载进行性能和压力测试。某些性能的不成熟用法缩放性不佳。例如,多项汇合蕴含内容、大量应用提早加载、对未编制索引的列执行条件查问、对存储生成的值进行大规模更新和插入、不足并发解决、大型模型、缓存策略不充沛。
  • 平安评审:例如,连贯字符串和其余秘密解决、非部署操作的数据库权限、原始 SQL 的输出验证、敏感数据加密。
  • 确保日志记录和诊断短缺且可用。例如,适当的日志记录配置、查问标记和 Application Insights。
  • 谬误复原。为常见故障场景(如版本回退、回退服务器、横向扩大和负载平衡、DoS 缓解和数据备份)筹备应急打算。
  • 应用程序部署和迁徙。布局如何在部署过程中利用迁徙;在应用程序启动时执行此操作可能会导致并发问题,并且对于惯例操作,这所需的权限比必要权限更高。在迁徙期间,应用暂存来辅助从谬误中复原。无关详细信息,请参阅利用迁徙。
  • 生成的迁徙的具体检查和测试。将迁徙利用于生产数据前,应答其进行全面测试。若表中蕴含生产数据,架构的形态和列类型就不能轻易更改。例如,在 SQL Server 上,对于映射到字符串和十进制属性的列,nvarchar(max) 和 decimal(18, 2) 极少成为最佳类型,但这些是 EF 应用的默认值,因为 EF 不理解你的具体情况。

    博主 GitHub 地址

    https://github.com/yuyue5945

关注公众号不迷路

~~~~

正文完
 0