我使用EF5(代码优先)& VS2012在我的项目中。
我尝试使用迁移在LocalDb中创建表。
每次我发现我的表不是在LocalDb中而是在sqlexpress中,虽然我创建了这样的ConnectionString:
<add name="StihlDbContext" connectionString="Server=(localdb)\v11.0;Initial Catalog=StihlDb;Integrated Security=True" providerName="System.Data.SqlClient" />
我不明白为什么EF在。\ SQLEXPRESS中创建数据库但在LocalDb中没有
答案 0 :(得分:3)
我怀疑你遇到了一个默认迁移器的小问题 - 它不是迁移实际的数据库,而是使用无参数构造函数创建一个新的上下文实例。如果您偶然在另一个程序集中有上下文类并且没有本地配置,则将使用默认的连接字符串。
解决方法:在项目中创建定义上下文的本地app.config文件。复制相同的连接字符串,以便在创建新的上下文实例时使用连接字符串。这将可能工作。
请记住,您不必从Visual Studio中迁移。相反,如果您只运行创建上下文的应用程序并设置迁移器
Database.SetInitializer( new MigrateDatabaseToLatestVersion<StihlDbContext, Configuration>() );
首次使用时,数据库将自动迁移。这比手动更新要方便得多。
答案 1 :(得分:0)
我遇到了完全相同的问题。如果你有机会在类库中安装了EntityFramework,那么你需要将类库设置为Startup Project 。否则,将找不到程序集中app.config中的连接字符串,并且您的DbContext实例构造函数将没有参数。
这意味着当您在程序包管理器控制台中运行update-database命令时,将在默认数据库服务器中创建或更新数据库。\ SQLExpress