我已成功在app.config文件中使用以下配置来设置实体框架初始化策略。
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[My.DataLayer.MyModelContext, My.DataLayer], [My.DataLayer.Migrations.Configuration, My.DataLayer]], EntityFramework"></databaseInitializer>
现在我想将它更改为DropCreateDatabaseAlways但是在调用update-database或运行程序时我一直收到错误。
<databaseInitializer type="System.Data.Entity.DropCreateDatabaseAlways`2[[My.DataLayer.MyModelContext, My.DataLayer], [My.DataLayer.Migrations.Configuration, My.DataLayer]], EntityFramework"></databaseInitializer>
除了DropCreateDatabaseAlways与MigrateDatabaseToLatestVersion之外,语法完全相同。
错误:
Failed to set database initializer of type 'System.Data.Entity.DropCreateDatabaseAlways`2[[My.DataLayer.MyModelContext, My.DataLayer], [My.DataLayer.Migrations.Configuration, My.DataLayer]], EntityFramework' for DbContext type 'My.DataLayer.MyModelContext, My.DataLayer' specified in the application configuration. See inner exception for details.
答案 0 :(得分:3)
在`2
表示法的帮助下,您可以指定泛型参数。
您需要编写`2
,因为MigrateDatabaseToLatestVersion类有两个通用参数。
但仅DropCreateDatabaseAlways 接受一个通用参数 TContext baseAlways<TContext> : IDatabaseInitializer<TContext>
所以你需要写作
<databaseInitializer type="System.Data.Entity.DropCreateDatabaseAlways`1[[My.DataLayer.MyModelContext, My.DataLayer]], EntityFramework"></databaseInitializer>