1

我正在使用 SubSonic 3 ActiveRecord 开始一个 ASP.NET MVC 项目。我添加了一个带有主键 ID 的表 Users 并重新编译 T4 文件以生成 User 类。

我想确保随着开发的进行,我可以随时重新生成/迁移数据库。看起来我必须在数据库中创建表和关系,重新生成 ActiveRecord 类并按照http://subsonicproject.com/docs/3.0_Migrations中的描述进行迁移。旧的 2.x 定义迁移的方法似乎不再可用。

有没有办法从代码而不是数据库驱动开发,通过更改模型类,并相应地迁移数据库,而不使用 SimpleRepository?我不想将生成的代码放入源代码存储库,但如果我不这样做,我会丢失数据库模式(除非我手动导出并保存它)。

4

3 回答 3

3

您仍然可以将 SubSonic 3 用作 DAL,并让 SubSonic 2.2 为您生成迁移。您只需要 sonic.exe 及其依赖项即可执行迁移文件。

更准确地说,我的 DataLayer 项目中有 Migrations 文件夹,它保留了所有迁移文件,但将 BuildAction 设置为 none。所以我有语法突出显示(但没有错误检查,除非我将 BuildAction 设置回编译)但代码不会弄乱我的项目。

当然,您可以将它们保存在自己的项目中。但我喜欢这种方式使其受版本控制,并确保我当前的 DAL 与我的迁移版本匹配。

此外,我已经命名了我的配置文件 migration.config(而不是 app.config/web.config)并使用这个命令行来执行我的迁移。

Command:           /path/to/sonic.exe  
Arguments:         migrate /config migration.config
Working Directory: $(SolutionDir)MyProject.Datalayer

注意 /config 开关覆盖 sonic.exe 正在寻找的配置文件。

于 2009-07-02T05:06:52.707 回答
2

你可以看看 SimpleRepository:

http://subsonicproject.com/docs/Simple_Repo_5_Minute_Demo

于 2009-07-02T08:10:26.777 回答
1

您链接到的文档确实指出:

“底线:如果您是关注数据库设计的开发人员,迁移可能不适合您”

我怀疑对于您想要的设计细节(我也会),迁移可能不合适?

于 2009-07-01T16:24:50.247 回答