SubSonic 3 ActiveRecord迁移忽略外键

时间:2009-09-11 13:45:16

标签: activerecord subsonic migration subsonic3 foreign-keys

使用SubSonic 3 ActiveRecord,我从具有外键的现有数据库生成代码。为了确保在切换数据库时数据库模式始终正确,我将迁移代码放在应用程序的开头,使用IDataProvider.MigrateToDatabase<MyClass>()为ActiveRecord.tt生成的每个类。事实证明,迁移代码不会重新生成外键。

我应该如何处理FK:

  • 完全忘记FK并在代码中处理级联删除。优点:Rails方式,业务逻辑保存在代码中。缺点:需要处理交易,代码变得更加丑陋;如果数据库被切换/清除,数据库和ActiveRecord之间的模式往返变得不可能(需要始终保持原始模式重新生成/修改AR代码,否则生成的一对多属性将丢失?);同样,我的同事可能会觉得我很生气。
  • 向迁移添加步骤以手动创建FK。优点:架构总是最新的; AR代码始终可以重新生成。缺点:数据库依赖(小问题?)
  • 以某种方式找到一种在代码中定义FK关系的方法,以便可以正确地迁移模式。

我做错了吗?我很感激任何建议。

1 个答案:

答案 0 :(得分:2)

我现在正在研究FK的东西,不管你信不信 - 这很难。如果您的父类包含子类的列表 - 是多少/多?也许 - 如果您的子类包含引用。这是一个微弱的假设(双向不是一个好的设计)。

反正。

AR对于DB-first人来说意味着更多 - 所以根据需要创建数据库,然后运行AR模板。你的FK将受到尊重等等。