一、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。并做了一些配置,配置的说明在代码中已经标注了,具体作用我就不再说明了。

第五章:创建DbContext的更多相关文章

  1. 《Linux命令行与shell脚本编程大全》第二十五章 创建与数据库、web及电子邮件相关的脚本

    25.1 MySQL数据库 /* 但是我在虚拟机上安装的时候居然不提示输入密码. 这个可以参考http://blog.csdn.net/sinat_21302587/article/details/7 ...

  2. 《高性能MySQL》——第五章创建高性能索引

    1.创建索引基本语法格 在MySQL中,在已经存在的表上,可以通过ALTER TABLE语句直接为表上的一个或几个字段创建索引.基本语法格式如下: ALTER TABLE 表名 ADD [UNIQUE ...

  3. 【WPF学习】第六十五章 创建无外观控件

    用户控件的目标是提供增补控件模板的设计表面,提供一种定义控件的快速方法,代价是失去了将来的灵活性.如果喜欢用户控件的功能,但需要修改使其可视化外观,使用这种方法就有问题了.例如,设想希望使用相同的颜色 ...

  4. SQL SERVER 2012 第五章 创建和修改数据表 の CREATE语句

    CREATE <object type> <object name> CREATE DATABASE <database name> 比较完整的语法列表: 日志文件 ...

  5. SQL SERVER 2012 第五章 创建和修改数据表 の SQL SERVER中的对象名

    [ServerName.[DataBaseName.[SchemeName.]]]ObjectName 服务器名,数据库名,模式名,对象名 其中模式是一个新出的坑爹的东西.

  6. kubernetes第五章--创建资源的两种方式

  7. Knockout应用开发指南 第五章:创建自定义绑定

    原文:Knockout应用开发指南 第五章:创建自定义绑定 创建自定义绑定 你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等).你可以你封装复杂的逻辑或行为,自定 ...

  8. 精通Web Analytics 2.0 (7) 第五章:荣耀之钥:度量成功

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第五章:荣耀之钥:度量成功 我们的分析师常常得不到我们应得的喜欢,尊重和资金,因为我们没有充分地衡量一个黄金概念:成果.因为我们 ...

  9. 《Linux内核设计与实现》读书笔记 第五章 系统调用

    第五章系统调用 系统调用是用户进程与内核进行交互的接口.为了保护系统稳定可靠,避免应用程序恣意忘形. 5.1与内核通信 系统调用在用户空间进程和硬件设备间添加了一个中间层, 作用:为用户空间提供了一种 ...

随机推荐

  1. javascript 学习一(概述+基本语法)

    http://js.do/ 概述 JavaScript :脚本语言 诞生于1995年. javascript 1.0,发布于Netscape Navigator 2  @1996年3月 布兰登·艾奇( ...

  2. lucene-查询query->WildcardQuery使用通配符搜索

    Lucene也提供了通配符的查询,这就是WildcardQuery. package ch11; import org.apache.lucene.analysis.standard.Standard ...

  3. js学习笔记6----作用域及解析机制

    1.作用域: 域:空间.范围.区域… 作用:读.写 script  全局变量,全局函数 自上而下 函数 由里到外 {} 2.js解析: ⑴   “找一些东西”:var. function. 参数…… ...

  4. ThinkPHP的RBAC

    基于角色的访问控制(Role-Based Access Control) 在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限. ThinkPHP通过5张表实现权限控制 th ...

  5. bzoj4404: [Neerc2015]Binary vs Decimal

    WC结束了,来补一下这题的题解 首先感谢SC神犇YYY(第一个AC此题的神犇)教我做法 再感谢教YYY做法的Claris大爷 首先,我们发现一个性质,一个合法的数的后缀必定是合法的,所以我们就可以bf ...

  6. 浅谈malloc()与free()

    malloc()与free() l  函数原型 malloc函数的函数原型为:void* malloc(unsigned int size),它根据参数指定的尺寸来分配内存块,并且返回一个void型指 ...

  7. BZOJ 4385: [POI2015]Wilcze doły

    4385: [POI2015]Wilcze doły Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 648  Solved: 263[Submit][ ...

  8. Leetcode 264. Ugly Number II

    Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...

  9. C#如何在子窗体获取父窗体的实例

    在子窗体可以使用this.Owner来获取父窗体的实例

  10. [iOS 视频流开发-获得视频帧处理]

    调用视频流所使用框架:<Foundation/Foundation.h> 必须定义的参数: 1.AVCaptureDevice(捕获设备:前置.后置摄像头等) 2.AVCaptureInp ...