由于不同模式中的对象名称相同,T4 模板中的亚音速转换失败
我有亚音速的核心 T4 模板来创建我的 DAL。我拥有可以选择性访问数据库中不同模式的用户的连接字符串。
当我尝试为有权访问两个模式的用户生成 DAL 部分类时,就会出现问题,这两个模式都具有同名的对象(例如表)。
因此,如果我的用户有权访问 MYSCHEMA1 和 MYSCHEMA2,并且这两个模式都包含名为 COMMONOBJECT 的对象,则亚音速转换将失败。
这是我收到的错误,
Running transformation: System.InvalidOperationException: Sequence contains more than one matching element
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at Microsoft.VisualStudio.TextTemplating1A7026BAC93607B56DDB080E7C2EC2DB.GeneratedTextTransformation.LoadTables()
at Microsoft.VisualStudio.TextTemplating1A7026BAC93607B56DDB080E7C2EC2DB.GeneratedTextTransformation.TransformText()
at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result)
我不想删除这些对象之一。
有没有一种方法可以配置 subsonic 以使用“完全限定名称”,例如 MYSCHEMA1.COMMONOBJECT 在运行转换时使用?
i have core T4 templates in subsonic to create my DAL. Connection strings which i have users which have selective access to different schemas in the database.
problems arise when i try to generate my DAL partial classes for a user which has access to two schemas both having an object (say a table) with the same name.
so if my user has access to MYSCHEMA1 and MYSCHEMA2 and both of these schemas contain an object with the name COMMONOBJECT, the transformations in subsonic fails.
here's the error i get
Running transformation: System.InvalidOperationException: Sequence contains more than one matching element
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at Microsoft.VisualStudio.TextTemplating1A7026BAC93607B56DDB080E7C2EC2DB.GeneratedTextTransformation.LoadTables()
at Microsoft.VisualStudio.TextTemplating1A7026BAC93607B56DDB080E7C2EC2DB.GeneratedTextTransformation.TransformText()
at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result)
i do not want to delete one of those objects.
is there a way i can configure subsonic to use 'fully qualified names' like MYSCHEMA1.COMMONOBJECT to use when running transformations?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
修改您的 tt 模板,首先找出模式,然后使用它为示例中的对象 - 表添加前缀,例如 myschema.employee
Modify your tt template, first find out the schema, then use it to prefix the objects in your example -- tables, e.g. myschema.employee