EF Core 基础知识入门教程

2020-12-24  本文已影响0人  于跃_198e

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),这可以实现以下两点:

EF Core 支持多个数据库引擎。

获取 Entity Framework Core 运行时

举例:安装或更新 EF Core SQL Server 的途径

三种途径

EF CORE 实操内容

模型

对于 EF Core,使用模型执行数据访问。 模型由实体类和表示数据库会话的上下文对象DBContext构成。 上下文对象允许查询并保存数据。

EF 支持以下模型开发方法:

EF 中的重要元素DBContext

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

如下图所示
[站外图片上传中...(image-e45b32-1608817321961)]

DBContext 详细介绍

DBContext 是一个实现上述功能,自然类体积较大,截取部分方法展示如下:

[站外图片上传中...(image-a4a8c8-1608817321961)]

如下展示一段代码以便更好理解:


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 的最佳做法,可帮助避免生产应用中的常见陷阱:

博主GitHub地址

https://github.com/yuyue5945

关注公众号不迷路

[站外图片上传中...(image-c5a8e3-1608817321961)]

上一篇下一篇

猜你喜欢

热点阅读