1

我已经成功地在我的 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.
4

1 回答 1

3

`2 符号的帮助下,您可以指定通用参数。

您需要编写`2,因为MigrateDatabaseToLatestVersion类有两个通用参数。

但是DropCreateDatabaseAlways接受一个通用参数 TContext baseAlways<TContext> : IDatabaseInitializer<TContext>

所以你需要写

<databaseInitializer type="System.Data.Entity.DropCreateDatabaseAlways`1[[My.DataLayer.MyModelContext, My.DataLayer]], EntityFramework"></databaseInitializer>
于 2013-04-14T20:35:36.300 回答