第五章:创建DbContext
一、DbContext介绍
DbContext是Entity Framework(EF)操作数据库的上下文网关(接口)。我们对数据库的所有操作都是通过DbContext完成的。下面我们将讨论在code first模式下如何创建自己的DbContext并配置优化。
二、创建DbContext
代码如下:
using System;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OwinW.Core.Entity;
using System.Data.Entity.ModelConfiguration.Conventions; namespace OwinW.Core.EFHelper { /// <summary> /// EF访问数据库的接口 /// </summary> public class MyDbContext : System.Data.Entity.DbContext { //在config中配置数据库的名称 private static string dbName = System.Configuration.ConfigurationManager.AppSettings["dbName"]; public MyDbContext() : base(dbName) { //解决团队开发中,多人迁移数据库造成的修改覆盖问题。 Database.SetInitializer<MyDbContext>(null); //base.Configuration.AutoDetectChangesEnabled = false; ////关闭EF6.x 默认自动生成null判断语句 //base.Configuration.UseDatabaseNullSemantics = true; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //表名不用复数形式 modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); //移除一对多的级联删除约定,想要级联删除可以在 EntityTypeConfiguration<TEntity>的实现类中进行控制 modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); //多对多启用级联删除约定,不想级联删除可以在删除前判断关联的数据进行拦截 modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>(); base.OnModelCreating(modelBuilder); } //下面放置的是数据库对应的实体对象 //格式如下: public DbSet<Demo> Demo { get; set; } } }
三、小结
上面我们就创建了一个自定义的DbContext。并做了一些配置,配置的说明在代码中已经标注了,具体作用我就不再说明了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)