• Entity Framework Code-First(6):Database Initialization


    Database Initialization:

    We have seen that Code First creates a database automatically in the Simple Code First Examplesection. Here, we will learn how Code first decides the database name and server while initializing a database.

    The following figure shows a database initialization workflow, based on the parameter passed in the base constructor of context class, which is derived from DbContext:

    Entity Framework code-first database initialization

    As per the above figure, base constructor of the context class can have the following parameter.

    1. No Parameter
    2. Database Name
    3. Connection String Name

    No Parameter:

    If you do not specify the parameter in the base constructor of the context class then it creates a database in your local SQLEXPRESS server with a name that matches your {Namespace}.{Context class name}. For example, Code First will create a database named SchoolDataLayer.Context for the following context class:

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

    Database Name:

    You can also specify the database name as a parameter in a base constructor of the context class. If you specify a database name parameter, then Code First creates a database with the name you specified in the base constructor in the local SQLEXPRESS database server. For example, Code First will create a database named MySchoolDB for the following context class.

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

    ConnectionString Name:

    You can also define connection string in app.config or web.config and specify connection string name starting with "name=" in the base constructor of the context class. Consider the following example where we pass name=SchoolDBConnectionString parameter in the base constructor.

    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>

    In the above context class, we specify a connection string name as a parameter. Please note that connection string name should start with "name=" otherwise, it will consider it as a database name. The database name in the connection string in app.config is SchoolDB-ByConnectionString. Code-First will create a new SchoolDB-ByConnectionString database or use existing SchoolDB-ByConnectionString database at local SQL Server. Make sure that you include providerName = "System.Data.SqlClient" in the connection string.

    Thus, Code-First use the base constructor parameter to initialize a database.

  • 相关阅读:
    codevs 1792 分解质因数
    ScrollView嵌套ViewPager,ViewPager内容不显示问题
    AndroidStudio不重新运行,Debug调试已有进程
    Android进阶之Fragment与Activity之间的数据交互
    Android修改包名的方法,简单粗暴。
    android studio 按钮运行按钮后,不弹出选择运行模拟器的对话框
    RGB颜色值与十六进制颜色码转换工具
    Android Studio查看其它APP的布局结构
    android实现多条件筛选列表菜单筛选菜单
    Android,一条线串联实心圆布局
  • 原文地址:https://www.cnblogs.com/purplefox2008/p/5644070.html
Copyright © 2020-2023  润新知