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

时间:2010-11-09 09:08:02

标签: c# asp.net subsonic subsonic-active-record

如果是这样,我认为这是麻烦。

2 个答案:

答案 0 :(得分:0)

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

模型重新生成的问题是什么?

答案 1 :(得分:0)

更麻烦的是编译时错误,因为您重命名了列或运行时错误“列xyz不存在”。

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

  1. SubSonic类是部分的。

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

  2. 修改模板。

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

  3. 继承课程。

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

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

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