EF学习和使用(一)Database First

本文介绍ORM思想,并通过Entity Framework的DatabaseFirst模式详细演示了如何基于现有数据库生成数据模型类及进行基本的数据查询操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇博客中介绍了ORM思想,可以说ORM思想在数据交互方面给我们带来了一次变革。他能够自动实现Entity实体的属性与关系型数据库字段的映射,增删改查的sql脚本由ORM来自动生成,使我们编码时不用考虑数据库数据结构,而是以操作实体对象的形式来完成与数据库的交互。与传统开发方式相比ORM可以使我们编写更少的代码来创建和维护应用程序。不得不说ORM这种思想的确优雅。


实现ORM思想的框架有很多,有重型的 Hibernate,EF,Nhibernate,微型的dapper,Fetalpoco等, 两类框架各有千秋,需要按照系统情况进行选择。重型的ORM框架适合与企业内部系统,使用人数最好一万以内。如果是互联网系统则应该选择微型的ORM框架。


ITOO .net版选用的是EntityFramework,对于EF已经学习和使用过一段时间了,现在来对EF做个系列的总结。
Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天咱们先从最简单的Database First开始说起,建立起咱们的第一个EF程序。


“Database First”模式顾名思义:“数据库优先”,使用这种模式的前提是应用程序已经拥有相应的数据库,咱们可以使用EF设计工具由数据库生成数据模型类,也可以使用Visual Studio模型设计器修改这些模型之间对应关系。


第一步

首先创建一个控制台应用程序,然后右键添加新建项,选择“ADO.NET 实体数据模型”,名称输入ModelTest:

第一步


第二步

接着选择来“自数据库的EF设计器”即DataBaseFirst:

这里写图片描述


第三步

选择新建连接并设置连接属性:

这里写图片描述


第四步

然后选择刚才新建的连接

这里写图片描述


第五步

然后选择要映射的“User”表,完成:

这里写图片描述


创建完模型之后,你会发现Visual Studio自动为你生成了“User”实体类和一个“EFTestEntitiesContext”数据库上下文操作类:

这里写图片描述


下面简单的看一下如何使用EF进行数据查询,查询可用两种方式,Linq和Lambda。

Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EFDBFirst
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化数据库上下文
            EFTestEntities dbcontext = new EFTestEntities();

            //使用Lambda表达式查询数据
            var user = dbcontext.User.Where(o => o.Name == "qiumuxiaq141812").ToList();

            //Linq语句查询
            var user1 = from o in dbcontext.User
                        where o.Name == "qiumuxiaq141813"
                        select o;

            //打印查询结果  
            if (user.Any())
            {
                Console.WriteLine("Lambda方式:"+ user.First().Name + "----" + user.First().Sex);
                Console.WriteLine("Linq方式:" + user1.First().Name + "----" + user1.First().Sex);
            }

            Console.Read();
        }
    }
}

执行结果如下图:

这里写图片描述




注意:如果咱们的数据库表结构发生改变后,只需在模型设计视图空白处右键,选择“从数据库更新模型”接着按照向导操作即可将模型更新。

在C# EF Core中,Database First是指从现有的数据库生成模型的过程。以下是使用EF Core Database First Wizard的个基本的例子: 首先,假设你已经有个SQL Server数据库,你想基于该数据库建立数据访问层。以下是步骤: 1. **安装Entity Framework Core Tools**: 使用NuGet包管理器安装`Microsoft.EntityFrameworkCore.SqlServer``Microsoft.EntityFrameworkCore.Tools`。 2. **打开命令行工具或Package Manager Console**: 打开Visual Studio命令提示符或PowerShell窗口。 3. **迁移初始化**: 进入项目目录,运行以下命令(假设你的项目名称是YourProject): ```powershell dotnet ef dbcontext scaffold "Server=your_server;Database=your_database;Trusted_Connection=True;" YourDbContext --outputDir Models --context YourDbContext.cs ``` 这里将创建个新的`YourDbContext`类(如果有需要自定义命名,可以替换),并生成对应的实体模型类(如`YourModel.cs`)在指定的Models目录下。 4. **添加DbContext到项目**: 将生成的`YourDbContext.cs`文件添加到你的C#项目中。 5. **运行迁移**: 如果这是第次设置数据库,还需要创建表结构。运行: ```powershell dotnet ef migrations add InitialCreate dotnet ef database update ``` 这将根据你的实体模型创建或更新数据库。 完整的`YourDbContext.cs`可能会像这样(简化版): ```csharp using Microsoft.EntityFrameworkCore; public class YourDbContext : DbContext { public YourDbContext(DbContextOptions<YourDbContext> options) : base(options) { } public DbSet<YourModel> YourTable { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { // 配置实体映射 modelBuilder.Entity<YourModel>().ToTable("YourTableName"); } } ``` 现在,你已经有了个基于数据库的第阶段模型。你可以根据需要继续调整模型,然后进行增删改查操作。
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值