在 Entity Framework 代码优先方法中创建的数据库的默认物理位置

Default physical location of Data base created in Entity Framework codefirst approach

我正在学习Entity Framework。我使用 Entity framework 代码优先方法(未指定任何连接字符串)创建了一个演示应用程序。

static void Main(string[] args)
    {
        CreateBlog();
    }

    private static void CreateBlog()
    {
        var ObjBlog = new Blog
            {
                BloggerName = "Rasmita",
                Title = "EntityFramework"
            };
        var Ctx = new Context();
        Ctx.Blogs.Add(ObjBlog);
        Ctx.SaveChanges();
    }

控制台应用程序 运行 很好,它创建了数据库,我可以从中获取数据。但是,我无法亲眼看到它。我的意思是我想知道它是在哪里创建的?在本地 Sql 服务器或 Visual studio 本地数据库中???

App.Config

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

上下文class

using System.Data.Entity;
using BlogsApp;

namespace DataLayer
{
    public class Context:DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }
    }
}

我正在使用 EntityFramework 6.1.1、.Net Framework 4.5、Visual studio 2012。我的机器上安装了 SqlServer 2012。请帮我找到 Db

它在您的 SQLEXPRESS 实例中。 大概会叫ConsoleApplication1.Context。 如果你有 sql server studio manager 使用 .\SQLEXPRESS 作为服务器名称,你会在那里看到数据库。您可以从那里获取文件位置,但应该位于

C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data

如果你是运行32位windows。

从这里开始

"If SQL Express is installed (included in Visual Studio 2010) then the database is created on your local SQL Express instance (.\SQLEXPRESS). If SQL Express is not installed then Code First will try and use LocalDb ((localdb)\v11.0) - LocalDb is included with Visual Studio 2012"

从这里开始

http://msdn.microsoft.com/en-us/data/jj591621.aspx

根据您的配置文件,您的默认连接工厂是:

System.Data.Entity.Infrastructure.SqlConnectionFactory

这是 SQL 服务器的连接工厂。由于您没有提供连接字符串,Entity Framework 将尝试连接到名为 .\SQLEXPRESS 的 SQL 服务器实例,并创建一个具有您的完整类型名称的数据库上下文,DataLayer.Context.

您可以通过更改默认连接工厂和调用 DbContext 构造函数的特殊重载来更改这两个默认值,但通常没有人费心。

您几乎总是应该做的是添加一个以您的上下文命名的连接字符串:

<connectionStrings> 
    <add name="Context"  
         providerName="System.Data.SqlClient"  
         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Blogging;Integrated Security=True;MultipleActiveRecordSets=True"/> 
</connectionStrings>

<connectionStrings> 
    <add name="Context"  
         providerName="System.Data.SqlClient"  
         connectionString="Data Source=(localdb)\v11.0;Initial Catalog=Blogging;Integrated Security=True;MultipleActiveRecordSets=True"/> 
</connectionStrings>

在没有指定连接字符串和默认 SQLServerExpress 实例的情况下,EntityFramework 在您的用户文件夹中创建 sql 数据库文件(例如 C:\Users[ yourusername]) 根据您的项目命名。

此文件似乎没有绑定到 SQL 服务器,即您可以自由移动它们。