2. EF Core简介

本文介绍了使用EF Core进行C#数据库操作的基本步骤,包括创建模型、上下文、数据库,以及增删查改操作。示例通过.NET Core控制台应用程序展示了如何映射Book实体到SQL Server的Books表,利用约定、注释和流利API配置模型,并通过EnsureCreatedAsync创建数据库。此外,还讨论了日志记录和依赖注入。
摘要由CSDN通过智能技术生成

第一个例子使用了一个Book类型,把这种类型映射到SQL Server数据库中的Books表。把记录写到数据库,然后读取、更新和删除它们。

在第一个示例中,首先创建数据库或者从应用程序创建数据库。为了先创建数据库,可以使用Visual Studio 2017中的SQL Server Object Explorer。选择数据库实例(localdb)\MSSQLLocalDB(随Visual Studio一起安装),单击树视图中的Databases节点,然后选择Add New Database。示例数据库WroxBooks只有一个表Books。

为了创建Books表,可以在WroxBooks数据库中选择Tables节点,然后选择Add New Table。使用如图所示的设计器,或者在T-SQL编辑器中输入SQL DDL语句,就可以创建Books表。下面的代码片段显示了创建表的T-SQL代码。单击Update按钮,可以将更改提交到数据库。

CREATE TABLE [dbo].[Table] (
    [BookId]    INT           IDENTITY (1, 1) NOT NULL,
    [Title]     NVARCHAR (50) NOT NULL,
    [Publisher] NVARCHAR (25) NULL,
    CONSTRAINT [PK_Books] PRIMARY KEY CLUSTERED ([BookId] ASC)
);

本章使用的示例应用程序都是.NET Core控制台应用程序,使用以下依赖项和名称空间:

依赖项

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFramework.Design

Microsoft.Extensions.DependencyInjection

Microsoft.Extensions.Logging.Console

名称空间

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.ChangeTracking

Microsoft.EntityFrameworkCore.Diagnostics

Microsoft.EntityFrameworkCore.Infrastructure

Microsoft.EntityFrameworkCore.Metadata.Builders

Microsoft.Extensions.DependencyInjection

Microsoft.Extensions.Logging

System

System.Collection.Generic

System.ComponentModel.DataAnnotations

System.ComponentModel.DataAnnotations.Schema

System.Linq

System.Threading.Tasks

1. 创建模型

访问Books表的BookSamples示例应用程序是一个.NET Core控制台应用程序。在这个应用程序中,Book类是一个简单的实体类型,定义了三个属性。BookId属性映射到表的主键,Title属性映射到Title列,Publisher属性映射到Publisher列。对于Title属性,应用Required属性是因为映射列在数据库中定义为NOT NULL。使用StringLength属性应用Title和Publisher属性的长度。这也映射到数据库中的列。为了把类型映射到Books表,将Table特性应用于类型:

    [Table("Books")]
    public class Book
    {
        public int BookId { get; set; }
        [Required]
        [StringLength(50)]
        public string Title { get; set; }
        [StringLength(25)]
        public string Publisher { get; set; }
    }

2. 约定、注释和流利API

EF Core使用了三个概念来定义模型:约定、注释和流利API。按照约定,有些事情会自动发生。例如,用Id前缀命名int或Guid类型的属性,将该属性映射到主键。

可以使用注释重写约定——指定特性。前面的例子使用Table特性将Book类型映射到Books表。还有一个映射到表格的约定:使用上下文的属性名。下一节将展示如何创建上下文。并不是每个约定都有注释。还使用了Required和StringLength特性。注释比约定更强大;可以做得更多。

除了使用注释,还可以使用流利API,这意味着配置是通过代码完成的,而不是使用特性完成的。在流利API中,可以使用方法的返回值来调用下一个方法。用于EF Core的流利API比注释更强大;可以做得更多。

3. 创建上下文

通过创建BooksContext类,实现了Book表与数据库的关系。这个类派生自基类DbContext。BooksContext类定义了DbSet<Book>类型的Books属性。这个类型允许创建查询,添加Book实例,存储在数据库中。要定义连接字符串,可以重写DbContext的OnConfiguring方法。在这里,UseSqlServer扩展方法将上下文映射到SQL Server数据库:

    public class 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值