实体框架代码首先使用非用户实例

时间:2012-12-30 02:58:03

标签: c# .net entity-framework

这是我使用Entity Framework Code First工作流程的第一步,所以也许我错过了一些简单的东西。我创建了继承自DbContext

的上下文类
public class Context : DbContext
{
    public DbSet<Book> Books { get; set; }
    public DbSet<Author> Authors { get; set; }
}

我在控制器代码中执行它:

var author = new Author()
{
  FirstName = "Julia",
  LastName = "Lerman"
};

using (var context = new Context())
{
  context.Authors.Add(author);
  context.SaveChanges();
}

我没有为EF设置的其他代码或配置。 当我启动应用程序并在控制器中命中代码时,一切正常,唯一的问题是数据库实际上不是在SQL Server中创建的,而是在本地运行。这意味着我不能真正使用SQL Server管理工作室来检查我的应用程序运行时的数据,我想这样做。

我发现在web.config中自动添加了以下键:

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=false;" providerName="System.Data.SqlClient" />

如何修改此配置密钥(或者还有其他我需要做的事情)以确保此数据库将在实际的SQL Server Express上运行而不是在进程中运行?

1 个答案:

答案 0 :(得分:1)

好吧,我想通了,感谢“编程实体框架:代码优先”一书,显然它是配置方案的约定,对于要获取的查询字符串,它的名称需要匹配的名称Context类(从DbContext继承的类)。 因此我需要添加如下所示的新连接字符串:

<add name="Context" connectionString="Data Source=.\SS2012EXPRESS;Initial Catalog=HomeLibrary;Integrated Security=True" providerName="System.Data.SqlClient" />

原始连接字符串可以保持原样,不用于运行时。我不完全确定它的目的是什么。