T4从SQL Server表生成枚举值
问题描述:
我想实现的是这或多或少倒数:T4从SQL Server表生成枚举值
http://www.olegsych.com/2008/07/t4-template-for-generating-sql-view-from-csharp-enumeration/
我有一个值组表(枚举名)和值表(枚举值),并希望将其转化为枚举。两者都在SQL Server中,并且都发生在.edmx中(所以有多种方法可以读取值)。
有什么“外面”已经这样做(我没有找到它)?如果不是,将去读取数据的最佳方式(SMO,EDMX动态加载,...)
答
好吧,这里我是如何实现它:
- 使用VolatileAssembly从T4工具箱引用...
- 实现一个T4辅助类,做所有的数据库工作的组件(使用EF时,请确保实例化上下文时使用一个连接字符串)
- 在.TT,只需调用进入T4助手类以获取您需要的数据并创建您的课程
答
我已经把一些更多的精力投入到写作such a template所以它所有的这些:
- 有明确的整数值产生枚举值;
- 使用Visual Studio的命名空间命名约定,因此生成的枚举具有项目的默认命名空间和任何子文件夹(就像Visual Studio中的任何代码文件一样);
- 通过使用附加的描述表列值来添加完整的枚举XML文档;如果你没有这些没关系;
- 正确命名生成的文件并在代码中添加一个附加属性,以便生成的
enum
不会被代码分析检查; - 多字查询表值正确连接到pascal套装等价物(即多字值变为
MultiWordValue
); - 枚举值始终以字母开头;
- 所有枚举值只包含字母和数字,其他所有值都被删除;
无论如何。一切都在this blog post非常有据可查。