我试图让EF在初始化时创建数据库,如MSDN documentation中所述,通过在app.config文件中配置数据库初始化程序。
<contexts>
<context type="Blogging.BlogContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Blogging.BlogContext, MyAssembly], [Blogging.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
我还设置了一个Interceptor来记录数据库输出
<interceptors>
<interceptor type="System.Data.Entity.Infrastructure.Interception.DatabaseLogger, EntityFramework">
<parameters>
<parameter value="C:\Temp\LogOutput.txt"/>
<parameter value="true" type="System.Boolean"/>
</parameters>
</interceptor>
</interceptors>
当我启动应用程序时,我得到一个InvalidOperationException
无法设置类型的数据库初始化程序 &#39; System.Data.Entity.MigrateDatabaseToLatestVersion`2 [[Blogging.BlogContext, MyAssembly],[Blogging.Migrations.Configuration,MyAssembly]], 的EntityFramework&#39;对于DbContext类型&#39; Blogging.BlogContext,MyAssembly&#39; 在应用程序配置中指定
但是当我打开日志文件输出时,它抱怨无法使用给定的登录信息连接到数据库。
在上午2/10/2017 11:55:43 AM -05:00无法打开连接,但有错误: 无法打开数据库&#34;配置&#34;登录请求。登录 失败。用户&#39; XXXX&#39;登录失败。在2017年10月2日开放连接 上午11:55:43 -05:00选择演员表(serverproperty(&#39; EngineEdition&#39;)为int) - 执行时间为2/10/2017 11:55:43 AM -05:00 - 在5 ms内完成,结果为:SqlDataReader
关闭连接时间为2/10/2017 11:55:43 AM -05:00
真正的问题是数据库还没有存在,我想在应用启动时创建。
修改 我可以使用Package Manager Console更新数据库。连接字符串或迁移脚本没有问题。