如果使用ActiveRecord,每次修改数据库结构都会生成模型?
如果是这样的话,我想这就是麻烦。
if it's like this,i think it's troubles.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如果是这样的话,我想这就是麻烦。
if it's like this,i think it's troubles.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
更麻烦的是,由于重命名列而导致编译时错误或运行时错误“列 xyz 不存在”。
如果您想自己更改生成的类并担心您的更改被覆盖。可通过三种方法对生成的 DAL 进行修改。
SubSonic 类别是部分的。
如果您在同一命名空间中创建另一个类,您可以添加属性/方法并覆盖成员(来自基类)。
修改模板。
根据 SubSonic 版本(2 或 3)的不同,生成 DAL 的方法也不同。但它们都共享类似的 aspx 语法(2 = 自定义,3 = T4 引擎)
从类继承。
您可以创建自己的类并继承生成的类。 (如果您想使用 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.
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).
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)
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
如果您使用 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?