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

时间:2015-01-16 11:34:45

标签: c# entity-framework datacontext

我正在学习实体框架。我使用Entity框架代码第一种方法创建了一个演示应用程序(没有指定任何连接字符串)。

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();
    }

控制台App正常运行,它创建了数据库,我可以从中获取数据。但是,我无法看到它。我的意思是我想知道它的创建地点?在本地Sql服务器或Visual Studio本地db ???

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>

上下文类

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

3 个答案:

答案 0 :(得分:3)

它位于您的SQLEXPRESS实例中。 可能会被称为ConsoleApplication1.Context。 如果你有sql server工作室管理器使用。\ SQLEXPRESS作为服务器名称,你会看到DB。您可以从那里获取文件位置,但应位于

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

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

如果你正在运行32位窗口。

从这里

&#34;如果安装了SQL Express(包含在Visual Studio 2010中),则会在本地SQL Express实例(。\ SQLEXPRESS)上创建数据库。如果未安装SQL Express,则Code First将尝试使用LocalDb((localdb)\ v11.0) - Visual Studio 2012中包含LocalDb&#34;

从这里

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

答案 1 :(得分:3)

如果没有指定连接字符串并且没有默认的SQLServerExpress实例,EntityFramework会在您的用户文件夹中创建sql数据库文件(例如C:\ Users [yourusername]),其名称与您的项目相同。

此文件似乎与SQL Server无关,即您可以自由移动它们。

答案 2 :(得分:2)

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

System.Data.Entity.Infrastructure.SqlConnectionFactory

这是SQL Server的连接工厂。由于您未提供连接字符串,因此实体框架将尝试连接到名为.\SQLEXPRESS的SQL Server实例,并使用您的上下文的完整类型名称创建数据库{{1 }}

您可以通过更改默认连接工厂并调用DataLayer.Context构造函数的特殊重载来更改这两个默认值,但通常没有人烦恼。

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

DbContext

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