【问题标题】:Subsonic transformations failing in T4 template due to same object name across different schemas由于跨不同模式的相同对象名称,T4 模板中的亚音速转换失败
【发布时间】:2012-03-02 02:49:43
【问题描述】:

我有 subsonic 的核心 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 在运行转换时使用?

【问题讨论】:

    标签: c# asp.net subsonic transformation auto-generate


    【解决方案1】:

    修改您的 tt 模板,首先找出架构,然后使用它为示例中的对象添加前缀——表,例如myschema.employee

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      相关资源
      最近更新 更多