代码之家  ›  专栏  ›  技术社区  ›  AJ.

从数据库架构生成类

  •  1
  • AJ.  · 技术社区  · 15 年前

    我已经仔细研究了之前提出的问题,没有找到副本。我希望从DB2模式(使用ISeries OLEDB提供程序)生成.NET中的基本实体类。有什么简单的方法可以做到吗?我已经研究过我的一代和代码制作者,似乎有一种更简单的方法。

    事先谢谢。

    编辑 我要去掉伊塞丽斯的标签,希望它能稍微消除这个问题的恐惧。有人对任何ADO.NET或OLEDB提供程序使用过什么吗?我想我可以调整它来和伊塞丽丝一起工作。

    编辑第2页 再加上iSeries标签,几天后就会接受我自己的答案,希望这能在将来帮助别人。+1致响应人员,谢谢。

    3 回复  |  直到 15 年前
        1
  •  2
  •   John    15 年前

    你试过吉维斯吗?它是用Perl编写的模板驱动的代码生成器。

    使用Jeeves,您可以分别修改规范解析器和模板,并将Perl命令注入模板。

    我没有做你想做的,但我做的是:

    1)使用jeeves作为分布式OO解析器,并在规范文件中创建了我的对象定义,该文件的格式是解析器可以读取的。 2)我对模板进行编码,以使用OO解析器从我的规范文件生成的抽象语法树。 3)这反过来会在Perl中生成代码生成器。我把这个代码生成器称为一个预buld事件(在vs 2005中),生成的代码就是在当时和那里编译的。

    您将不得不构建您想要的模板(可能还有规范解析器),但是一旦您这样做了,您就可以准确地输出您想要的内容,而不需要额外的开销。

        2
  •  1
  •   Adam Ralph    15 年前

    这可能有点冗长,但有一种方法是使用 NORMA VS plug in 然后通过插件附带的plix生成器生成.NET类。

    您可能会发现结果类使用了您可能不需要的额外成员来修饰(它们被编码,以便在需要时在组件模型上下文中使用),但是您可以很容易地去掉这些额外的人工制品。

        3
  •  0
  •   Community CDub    7 年前

    经过更多的研究,我决定自己编写代码生成器。我之所以问这个问题,部分原因是.NET的iSeries提供程序不是很健壮,所以没有给出枚举模式信息的方法。然而,在发现 this question ,我可以使用以下简单的内联SQL来完成它:

    //Enumerate schema tables (excludes views)
    select table_name from qsys2.tables where table_schema = 'schema_name' and table_type = 'BASE TABLE'
    
    //Enumerate table columns
    select * from qsys2.columns where table_schema = 'schema_name' and table_name = 'table_name' order by ordinal_position;
    

    也许这会对将来的人有所帮助。