如果使用ActiveRecord,每次修改数据库结构都会生成模型?

发布于 2024-10-01 06:54:44 字数 23 浏览 2 评论 0原文

如果是这样的话,我想这就是麻烦。

if it's like this,i think it's troubles.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

莫多说 2024-10-08 06:54:44

更麻烦的是,由于重命名列而导致编译时错误或运行时错误“列 xyz 不存在”。

如果您想自己更改生成的类并担心您的更改被覆盖。可通过三种方法对生成的 DAL 进行修改。

  1. SubSonic 类别是部分的。

    如果您在同一命名空间中创建另一个类,您可以添加属性/方法并覆盖成员(来自基类)。

  2. 修改模板。

    根据 SubSonic 版本(2 或 3)的不同,生成 DAL 的方法也不同。但它们都共享类似的 aspx 语法(2 = 自定义,3 = T4 引擎)

  3. 从类继承。

您可以创建自己的类并继承生成的类。 (如果您想使用 SubSonic2 的 xyzCollection,我不建议您这样做。

更新:仅当您更改文件或右键单击 tt 文件并选择“运行自定义工具”时,才会执行 T4 (*.tt) 模板。对于 SubSonic ,在架构更改后,您必须为要更新的每个 tt 文件(ActiveRecord.tt、Structs.tt 等)选择“运行自定义工具”。
然而,T4 是一个独立的工具,可以轻松集成到您的构建过程中:

http://broloco.blogspot.com/2008/11/using-t4-command-line-parameters.html

What is more trouble, a compile time error because you renamed a column or a run time error "Column xyz does not exist".

If you want to change the generated classes by yourself and are worried about your changes being overwritten. There are three ways to make modifications to the generated DAL.

  1. SubSonic classes are partial.

    If you create another class within the same namespace you can add properties/methods and override members (from the base class).

  2. Modify the templates.

    Depending on the SubSonic version (2 or 3) there are different approches how to generate the DAL. But they both share a similar aspx like syntax (2 = custom, 3 = T4 Engine)

  3. Inherit from the classes.

You can create your own classes that inherit from the generated ones. (I would not suggest to do that if you want to use SubSonic2's xyzCollection.

Update: The T4 (*.tt) templates are executed only when you change the file or right click a tt file and choose "Run Custom Tool". For SubSonic, after a Schema changed you have to select "Run custom tool" for every tt file you want to update (ActiveRecord.tt, Structs.tt, etc.).
However, T4 is a standalone tool that can be easily be integrated in your build process:

http://broloco.blogspot.com/2008/11/using-t4-command-line-parameters.html

深海夜未眠 2024-10-08 06:54:44

如果您使用 Subsonic,则每次修改数据库时都会重新创建模型(如果您使用构建提供程序,则自动创建;如果您使用 Subsonic.exe 生成类,则手动创建)。

模型重新生成有什么问题呢?

If you are using Subsonic, the model is recreated each time the database is modified (automatically if you are using the build provider or manually if you are using Subsonic.exe to generate classes).

What is the problem with the fact that the model is regenerated?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文