gpt4 book ai didi

c# - 我应该为哪个项目启用迁移

转载 作者:可可西里 更新时间:2023-11-01 09:06:23 25 4
gpt4 key购买 nike

我有一个 wpf 项目,结构如下:

project1(solution)
|->Model(project)
|->DataAccess(project)
|->project1(project)

Project1是我编译并交付exe给用户的项目。

现在我想启用自动迁移:Enable-Migrations –EnableAutomaticMigrations

project1 是默认项目。当我运行该命令时,显然它无法找到位于 DataAccess 项目中的数据库上下文。我能够在 DataAccess 项目中启用它。

但它是正确的吗?如何在 project1 项目中启用它?


编辑:

我想我可以在 DataAccess 项目中启用迁移,并将它的 MyConfiguration 引用返回给 DataAccess 项目?

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MyConfiguration>());

但是我得到这个错误:

Error   2   'DataAccess.Migrations.Configuration' is inaccessible due to its protection level

最佳答案

您是否尝试过使用 -StartupProjectName 参数?

启用迁移 -EnableAutomaticMigrations -ProjectName DataAccess -StartupProjectName project1

最后一个参数指定在该项目中模拟运行,包括来自 app.config/web.config 的任何设置。

编辑:关于启用迁移,您看到的错误可能是因为 MigrationsConfiguration 默认创建为内部。您可以:

  • 公开
  • 在 DataAccess 项目的某处设置数据库初始化器
  • 在 project1 的 app.config/web.config 中设置它。即使类型是内部类型,它也会在运行时解析并仍然有效:

    <entityFramework>
    <contexts>
    <context type="DataAccess.FooContext, DataAccess">
    <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[DataAccess.FooContext, DataAccess], [DataAccess.Migrations.Configuration, DataAccess]], EntityFramework, PublicKeyToken=b77a5c561934e089">
    </databaseInitializer>
    </context>
    </contexts>
    </entityFramework>

关于c# - 我应该为哪个项目启用迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13245099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com