• 【译】第6节---数据库初始化


    原文:http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx

    本节,我们将学习Code First在初始化数据库时如何决定数据库名称和服务器。

    下图显示了一个数据库初始化工作流程,基于从DbContext派生的上下文类的基础构造函数中传递的参数:

     

    根据上图,上下文类的基础构造函数可以具有以下参数:

    1. 无参数
    2. 数据库名称
    3. 连接字符串名称

    无参数

    如果不在上下文类的基本构造函数中指定参数,那么在本地SQLEXPRESS服务器中创建一个名称与{Namespace} {Context class name}匹配的数据库。

    例如,Code First将为以下上下文类创建一个名为SchoolDataLayer.Context的数据库:

    namespace SchoolDataLayer
    {
        public class Context: DbContext 
        {
            public Context(): base()
            {
                
            }
        }
    }

    数据库名称

    你还可以将数据库名称指定为上下文类的基本构造函数中的参数。 如果指定数据库名称参数,则Code First将使用本地SQLEXPRESS数据库服务器中的基础构造函数中指定的名称创建数据库。

    例如,Code First将为以下上下文类创建一个名为MySchoolDB的数据库:

    namespace SchoolDataLayer
    {
        public class Context: DbContext 
        {
            public Context(): base("MySchoolDB") 
            {
                       
            }
        }
    }

    连接字符串名称

    你还可以在app.config或web.config中定义连接字符串,并在上下文类的基础构造函数中指定以“name =”开头的连接字符串名称。

    考虑下面的例子,我们在基础构造函数中传递name = SchoolDBConnectionString参数:

    namespace SchoolDataLayer
    {
        public class Context: DbContext 
        {
            public SchoolDBContext() : base("name=SchoolDBConnectionString") 
            {
            }
        }
    }

    App.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <connectionStrings>
          <add name="SchoolDBConnectionString" connectionString="Data Source=.;Initial Catalog=SchoolDB-ByConnectionString;Integrated Security=true" providerName="System.Data.SqlClient"/>
        </connectionStrings>
    </configuration>

    在上述上下文类中,我们指定一个连接字符串名称作为参数。 请注意,连接字符串名称应以“name =”开头,否则会将其视为数据库名称。

    app.config中的连接字符串中的数据库名称是SchoolDB-ByConnectionString。 Code-First将创建一个新的SchoolDB-ByConnectionString数据库,或者在本地SQL Server上使用现有的SchoolDB-ByConnectionString数据库。

    确保在连接字符串中包含providerName =“System.Data.SqlClient”。

    综上所述,Code-First使用基础构造函数初始化数据库。

  • 相关阅读:
    [git 学习篇]自己在github创建一个远程服务器创库
    [git 学习篇]远程创库
    [git 学习篇]删除文件
    [git 学习篇] git checkout 撤销修改
    [git 学习篇]git管理的是修改,并非文件
    log4net面面观之Repository
    log4net面面观之工作原理
    asp.net获取当前页面文件名,参数,域名等方法。统一session验证和权限验证的方法
    C#使用Log4Net记录日志
    SharePoint 2010中的客户端AJAX应用——ASP.NET AJAX模板
  • 原文地址:https://www.cnblogs.com/talentzemin/p/7111932.html
Copyright © 2020-2023  润新知