配置DropCreateDatabaseAlways

时间:2013-04-14 20:31:24

标签: entity-framework

我已成功在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.

1 个答案:

答案 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>