专栏首页喵叔's 专栏Entity Framework 小知识(二)

Entity Framework 小知识(二)

零、基于代码配置

基于代码配置是EF6新增的一个特性,操作步骤如下:

  1. 创建 DbConfig 派生类;
  2. 配置默认连接工厂;
  3. 设置 Database Provider
  4. 设置数据库初始化器;
1. 创建 DbConfig 派生类
public class EF6Config:DbConfiguration
{
    public EF6Config(){}
}

接下来使用 DbConfigurationType 属性在上下文类中设置基于代码的配置类:

[DbConfigurationType(typeof(EF6Config))]
public partial class EF6DbContext:DbContext
{
  public EF6DbContext():base("name=EF6DbContext"){}  
}
2. 配置默认连接工厂

使用 SetDefaultConnectionFactory 方法设置默认连接工厂(以SQL SERVER 数据库为例):

public class EF6Config:DbConfiguration
{
    public EF6Config()
    {
      this.SetDefaultConnectionFactory(new System.Data.Entity,Infrastructure.SqlConnectionFactory());
    }
}
3. 设置 Database Provider

使用 SetProviderServices() 方法配置数据库提供程序:

public class EF6Config:DbConfiguration
{
    public EF6Config()
    {
      this.SetDefaultConnectionFactory(new System.Data.Entity,Infrastructure.SqlConnectionFactory());

      this.SetProviderServices("System.Data.SqlClient",System.Data.Entity.SqlServer.SqlProviderServices.Instance);
    }
}
4. 设置数据库初始化器

在使用 code first 的情况下,可以使用基于代码的配置数据库的初始值:

public class EF6Config:DbConfiguration
{
    public EF6Config()
    {
      this.SetDefaultConnectionFactory(new System.Data.Entity,Infrastructure.SqlConnectionFactory());

      this.SetProviderServices("System.Data.SqlClient",System.Data.Entity.SqlServer.SqlProviderServices.Instance);

      this.SetDatabaseInitializer<EF6DbContext>(new CustomDBInitializer(EF6DbContext)());
    }
}

注:.config 中 的配置优于代码配置,也就是说,如果同时在 .config 中和代码中都设置了配置选项,则优先使用 .config 中的设置。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Entity Framework 小知识(五)

    在 多对多关系映射 中关联表是EF自动生成的。但有时候我们需要显示定义关联表。我们可以按照如下步骤定义(继续使用多对多关系映射这篇文章饿代码):

    喵叔
  • Entity Framework Core 实现全局查询过滤

    微软在 Entity Framework Core 2+ 中引入了全局查询过滤器,简化了构建多租户应用程序和实体软删除的复杂度。这篇文章我将通过代码的形式对全局...

    喵叔
  • 通过运行期类型检查实现泛型算法

    虽然我们可以通过指定不同的类型参数来实现泛型类的复用,但是在某些情况下通用就意味着我们无法利用具体类型的优势。针对这一点 C# 允许在发现类型参数所表示的对象具...

    喵叔
  • C# 数据操作系列 - 3. ADO.NET 离线查询

    在上一篇中,我故意留下了查询的示范没讲。虽然说可以通过以下代码获取一个DataReader:

    程序员小高
  • 【JAVA】多线程学习

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。

    韩旭051
  • Android编程设计模式之命令模式详解

    本文实例讲述了Android编程设计模式之命令模式。分享给大家供大家参考,具体如下:

    砸漏
  • C语言中调用系统命令(system popen...)

    相关函数 fork,execve,waitpid,popen 表头文件 #include<stdlib.h> 定义函数 int system(const cha...

    用户5807183
  • springboot集成ueditor富文本编辑器(不需修改ueditor源码)

    最近工作需要重新搭建公司网站,其中需要使用富文本编辑器,货比三家,最后选择了百度团队的UEditor。项目框架为springboot,所以涉及到springbo...

    凯哥Java
  • 设计模式之命令模式-引导篇及原理

    项目背景:随着物联网的流行以及智能化家具普及。一个遥控器可以管控家里所有设备(家电等)也很正常了。

    凯哥Java
  • 谷歌医疗AI又有新进展:转移性乳腺癌检测准确率达99%

    在最新公布的进展中,Google深度学习算法在转移性乳腺癌的检测精度测试中,准确率达到了99.3%。

    量子位

扫码关注云+社区

领取腾讯云代金券