2010-10-12 71 views
1

我想实现的是这或多或少倒数:T4从SQL Server表生成枚举值

http://www.olegsych.com/2008/07/t4-template-for-generating-sql-view-from-csharp-enumeration/

我有一个值组表(枚举名)和值表(枚举值),并希望将其转化为枚举。两者都在SQL Server中,并且都发生在.edmx中(所以有多种方法可以读取值)。

有什么“外面”已经这样做(我没有找到它)?如果不是,将去读取数据的最佳方式(SMO,EDMX动态加载,...)

回答

0

好吧,这里我是如何实现它:

  • 使用VolatileAssembly从T4工具箱引用...
  • 实现一个T4辅助类,做所有的数据库工作的组件(使用EF时,请确保实例化上下文时使用一个连接字符串)
  • 在.TT,只需调用进入T4助手类以获取您需要的数据并创建您的课程
3

我已经把一些更多的精力投入到写作such a template所以它所有的这些:

  • 有明确的整数值产生枚举值;
  • 使用Visual Studio的命名空间命名约定,因此生成的枚举具有项目的默认命名空间和任何子文件夹(就像Visual Studio中的任何代码文件一样);
  • 通过使用附加的描述表列值来添加完整的枚举XML文档;如果你没有这些没关系;
  • 正确命名生成的文件并在代码中添加一个附加属性,以便生成的enum不会被代码分析检查;
  • 多字查询表值正确连接到pascal套装等价物(即多字值变为MultiWordValue);
  • 枚举值始终以字母开头;
  • 所有枚举值只包含字母和数字,其他所有值都被删除;

无论如何。一切都在this blog post非常有据可查。