Code First实战

C# FreeSql实战:Sqlite数据库的DB First与Code First保姆级教程(附避坑指南) 本文提供了C# FreeSql框架操作Sqlite数据库的DB First与Code First两种开发模式的详细实战教程。通过对比分析两种模式的核心思想、适用场景与操作流程,并结合具体代码示例,帮助开发者快速上手并规避常见陷阱,实现高效、灵活的数据库开发。 阅读详情

什么是Code First

 

用白话说:就是不用打开数据库软件,也不用引用实体表,直接用代码code来把实体映射成数据表

 

 

 Code First实战

 

1.直接新建立一个控制台应用程序

 

2.我们新建两个类,一个叫ClassInfo

 

 

3. 一个叫StudentInfo

 

 

4.怎么让这两个类有关联呢?在ClassInfo里添加

 

 

5.在StudentInfo里添加

 

 

6.怎么把这两个类映射成两个表呢?首先添加引用。一个是system.data.entity,一个是Entity Framwork,还有一个是Entity Framwork.sqlserver。前者的位置如下

 


 

7.后两个得自己添加,先浏览——然后在这个目录下

 

这里请注意:如果您那里没有这两个DLL插件,请参考我的前两篇EF博客,新建“来自数据库的EF设计器”。然后在这个的packages里就能找到了~

 

 

8.然后在配置文件里写上数据库连接信息

 

 

 

9.接着,我们需要自己建立一个EF数据操作类。新建一个CodeFirstDbContext,然后需要导入命名空间,继承父类。代码如下

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace CodeFirst
{
    public class CodeFirstDbContext : DbContext
    {
        public CodeFirstDbContext() : base("name=connStr")
        {

        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }

        public DbSet<ClassInfo> ClassInfo { get; set; }
        public DbSet<StudentInfo> StudentInfo { get; set; }
    }
}

 

 

10.然后我们要完善学生类和班级类,为它们设置约束条件,这里需要添加引用哦

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

namespace CodeFirst
{
    public class ClassInfo
    {
        [Key]   //设置主键
        public int Id { get; set; }
        [StringLength(32)]  //设置类型长度
        [Required]  //不允许为空
        public string ClassName { get; set; }
        [Required]
        public DateTime CreateTime { get; set; }
        public virtual ICollection<StudentInfo> StudentInfo { get; set; }
    }
}

 

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

namespace CodeFirst
{
    public class StudentInfo
    {
        [Key]
        public int Id { get; set; }
        [StringLength(32)]
        [Required]
        public string StuName { get; set; }
        [Required]
        public DateTime SubTime { get; set; }
        public virtual ClassInfo ClassInfo { get; set; }
    }
}

 

 

11.我们可以在program里执行建表的命令了,先写入如下代码再运行一下。

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

namespace CodeFirst
{
    public class Program
    {
        static void Main(string[] args)
        {
            CodeFirstDbContext db = new CodeFirstDbContext();
            db.Database.CreateIfNotExists();
            ClassInfo classInfo = new ClassInfo();
            classInfo.ClassName = "0413班";
            classInfo.CreateTime = DateTime.Now;
            db.ClassInfo.Add(classInfo);
            db.SaveChanges();
        }
    }
}

 

 

12.检查你的数据表

 

 

 

尾声

 

是不是很神奇呢?不过你是否发现,CodeFirst是这三种方式最复杂的。要是我的话,能用前两种一定不用CodeFist。哈哈

 

Entity Framework深度实战:Code First架构与Fluent API映射精要 Entity Framework(EF)作为.NET生态主流ORM框架,其核心价值在于将面向对象模型与关系型数据库高效桥接。理解其底层原理——尤其是DbContext状态机、变更跟踪机制与DbSet查询构建逻辑——是规避N+1查询、冗余JOIN和性能抖动的关键。Code First范式通过强类型C#代码替代XML EDM,实现领域驱动开发与敏捷迭代的统一;而Fluent API则以解耦、可测试、可维护的方式完成实体映射,支撑TPH/TPT继承策略、垂直分割及索引优化等高级场景。本文聚焦EF6.1生产级实践, 阅读详情

相关推荐

震惊!!!C# Code First 居然能自动生成数据库表?(文尾有完整源码)

简介:1.Code First 是一种使用 C# 编码来创建数据库的方法。它是 Entity Framework 中的一种数据访问方式,旨在通过编写 C# 代码来描述数据模型,然后自动生成数据库模式和表结构,从而简化了数据库开发的过程。2.传统开发中,通常采用DbFirst的方式开发,先有数据库和表,再将对应的表转为实体。

互联网民工手记 3959

EF学习和使用(三)Code First

Code First模式我们称之为“代码优先”模式,从某种角度来看,其实“Code First”和“Model First”区别并不是太明显,只是它不借助于实体数据模型设计器,而是直接通过编码方式设计实体模型(这也是为什么最开始“Code First”被叫做“Code Only”的原因)。但是对于EF它的处理过程有所差别,例如我们使用Code First就不再需要EDM文件,所有的映射通过“数据注释

陌上花开,可缓缓归矣 1万+

EF框架——代码优先(CodeFirst)

Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入的功能。使用Code First模式进行EF开发时开发人员只需要编写对应的数据类(其实就是领域模型的实现过程),然后自动生成数据库。

使用Code First(EF Core.Sqlite)

使用EF Core建立Code First,完成数据库迁移。使用sqlite数据库1.建立一个.net core web api项目2.安装Microsoft.EntityFrameworkCore.Sqlite3. 建立一个实体 4.建立DataContext继承DbContext,初始化构造函数,继承base,再把User类写入 5.配置数据库 注意:这里必须写 FileName=./demo.db 否则后面生成的时候报错6.安装Microsoft.EntityFrameworkCore

故里2130 3062

EF三种编程方式之CodeFirst 代码

EF三种编程方式之CodeFirst 代码

使用Code First模式、三层架构设计登录界面winform

使用Code First模式、三层架构设计登录界面winform

什么是代码优先(Code First)

CodeFirst是EntityFramework的一种技术手段,因为传统编程方式都是先建立数据库,然后根据数据库模型为应用程序建模,再进行开发; CodeFirst从字面上理解就是代码先行,先在程序中建立要映射到数据库的实体结构,然后EntityFramework可以根据实体结构生成所对应的数据库。

qq_36726130的博客 2648

STM32裸机开发基础:寄存器直接操作详解

寄存器是微控制器内部的特殊存储单元,直接与硬件电路连接,用于控制和监视硬件功能。与普通内存不同,寄存器的每一位(bit)通常都有特定的硬件含义。寄存器就是机器的控制面板上的各种开关和指示灯每个开关控制一个具体功能(如打开LED、启动通信)每个指示灯显示一个具体状态(如数据接收完成、错误发生)// GPIO引脚定义1。

2401_88760782的博客 2187

注入燃料——Entity Framework Core 与 Code First 实战

我们将构建一个经典的“待办事项管理”系统。我们定义一个TodoItem类。注意,这次我们使用传统的class而非record,因为在EF Core中,实体通常需要属性的可变性,且class对导航属性(关联关系)的支持更为成熟。创建// 这是一个实体类,对应数据库中的一张表// 主键。EF Core约定:名为 Id 或 <类名>Id 的属性会被自动设为主键set;// 任务标题set;// 是否完成set;// 创建时间set;

epxcTY0C8的博客 224

WhatsApp API接口的隐秘角落:从协议解析到自定义消息引擎

本文深入解析WhatsApp API接口的隐秘角落,从协议逆向工程到自定义消息引擎开发实战。通过分析WhatsApp的二进制XML协议和加密机制,构建超越官方API限制的自定义消息引擎,实现高效、灵活的即时通讯解决方案。文章还提供了企业级架构设计和风控规避策略,助力开发者突破官方限制,提升消息到达率和成本效益。

q3r4s5t的博客 761

ESP32-S3 SPI驱动SD卡与FATFS文件系统实践

SPI(串行外设接口)是嵌入式系统中常用的同步串行通信协议,通过主从架构实现全双工通信。其工作原理基于时钟同步和数据线传输,具有接线简单、占用引脚少的优势。在存储扩展场景中,SPI模式可驱动SD卡实现大容量数据存储,配合FATFS文件系统可提供标准化的文件管理能力。ESP32-S3作为乐鑫推出的高性能Wi-Fi/蓝牙双模芯片,其SPI外设支持高达80MHz时钟频率,结合ESP-IDF提供的sdspi_host驱动,开发者能快速实现SD卡存储方案。该技术广泛应用于物联网设备日志存储、传感器数据采集等场景,本实

weixin_29168393的博客 357

EntityFramework6 Code First实战:从零开始构建数据库模型

EntityFramework6(EF6)的Code First模式是一种强大的ORM(对象关系映射)技术,它允许开发者完全通过C#类来定义数据库模型,无需手动编写SQL脚本。这种"代码优先"的开发方式极大简化了数据库设计流程,让开发者可以专注于业务逻辑而非数据访问细节。本文将带你从零开始,掌握EF6 Code First的核心概念和实战技巧。 ## 什么是Code First? Code F

gitblog_00309的博客 409

红外避障模块介绍

该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接回输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3v-5v。该模块测距离2~~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;1.VCC外接3.3v-5v电压(可以直接与5v单片机和3.3v单片机相连).

weixin_46251230的博客 2万+

C# FreeSql实战:Sqlite的DB First与Code First开发模式对比与选择

本文深入对比了C# FreeSql操作Sqlite数据库时DB First与Code First两种开发模式。DB First从现有数据库生成实体类,适合维护或对接已有数据库;Code First从代码模型生成数据库,适合快速迭代的新项目。文章结合实战经验,分析了两种模式的核心机制、优缺点及适用场景,并提供了混合使用建议与选择指南,帮助开发者根据项目需求做出最佳决策。

weixin_29209825的博客 103

【openwrt-21.02】T750 openwrt 双系统说明及切换方法

高度集成的 T750 平台大幅减少组件数量,为产品设计者提供更小的尺寸和更低的功耗。T750 采用先进的 7nm 制程,高度集成 5G 调制解调器和四核 Arm CPU,提供较强的功能和配置,设备制造商得以打造精巧的高性能 CPE 产品,如固定无线接入(FWA)路由器和移动热点。3. preloader 加载并启动 A 系统,若 A 系统的任一启动阶段加载失败,preloader 将重新加载并启动 A 系统 3 次,若 3 次均失败,则自动切换至 B 系统,加载并启动 B 系统。A/B 系统切换流程如下。

wgl307293845的博客 1414

1-Wire 单总线硬件结构及软件时序分析(实测波形+C代码分析)

1根线就可以通信,是不是很神奇?因为其节省I/O口的优点而被广泛使用!

记得诚 1万+

EF6 与 EF Core 实战全解:从 EDMX 到 Code First / DB First,一篇就够了

这个EF和EF core的区别

2401_83575670的博客 190

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

【YOLO11改进 - 特征融合】利用Hyper-YOLO 的混合聚合网络(MANet)改进yolo11,提升基础网络的特征提取能力

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 904

EF之Code First代码优先

&#13; 1.前言&#13; 通过英文可知,表示的是代码优先,一般创建EF都是先创建数据库,创建根据数据库的EF实体模型,而code - first 则是反过来!。。。&#13; 2.代码实战&#13; &#13;  &#13; 我们这次创建的不是原来的数据库EF设计器,而是空的Code first 模型。如果说你的项目引用中没有entity framkwork,则需要去n...

qq_39110534的博客 461

VSCode + QMT 量化交易完整解决方案!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1327

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

EFCore Code First实战:从模型设计到生产迁移的完整指南

在现代软件开发中,ORM(对象关系映射)框架成为连接业务代码与关系数据库的桥梁。EFCore(Entity Framework Core)作为.NET生态的核心ORM,提供了Database First、Model First与Code First三种开发模式,其中Code First以C#实体类作为模型来源,通过迁移机制管理数据库结构变更,将结构演进纳入版本控制。其原理在于对比模型快照与当前模型,生成增量迁移脚本,实现可回滚、可审查的数据库升级。这一技术显著提高了团队协作效率,尤其适合新项目、库结构由应用

weixin_29300241的博客 318

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

.NET 8 Web开发入门(四):注入燃料——Entity Framework Core 与 Code First 实战

EF Core 作为微软官方的 ORM(对象关系映射)框架,让我们可以用 C# 对象直接操作数据库,将 LINQ 查询转换为 SQL,极大地提升了开发效率和代码可读性。在之前的系列文章中,我们已经搭建了 ASP.NET Core 的最小 API,并理解了依赖注入的魔法。它不仅仅是自动生成 DDL,更重要的是,它记录了数据库模式的每一次变更。### 深入剖析:EF Core 的查询管道与变更跟踪上面的代码看似简单,但背后包含了 EF Core 的三大核心机制:1.,生成了数据库迁移,并在 API 中注入了。

ACNe1i0h3的博客 233

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 写一份Java文档注释
下一篇: ionic新建项目失败:node-sass/node scripts
评论 21
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值