【问题标题】:TypedDataSetGenerator ignoring HierarchicalUpdate option?TypedDataSetGenerator 忽略 HierarchicalUpdate 选项?
【发布时间】:2010-11-28 18:16:34
【问题描述】:

我正在使用System.Data.Design.TypedDataSetGenerator.xsd 文件(由VS2008 生成)转换为与.NET 2.0 兼容的强类型DataSet 类。据我从 MSDN 了解,必须指定 HierarchicalUpdate option 才能获得与 VS2008 IDE 生成的相同结果:

HierarchicalUpdate - 生成类型化的数据集,这些数据集具有 TableAdapterManager 和用于启用分层更新的相关方法。

所以我指定了该选项,正如您在下面的代码中所见,但输出的 .Designer.cs 文件不包含 TableAdapterManager... 它甚至没有任何 TableAdapters! VS2008 是否有它自己使用的内部类型化数据集生成器,或者我遗漏了什么,或者这是一个 .NET 错误?

  string schemaContent;

  using (StreamReader reader = new StreamReader(@"C:\CVS\CallRetrieverPlain\CallRetrieverPlain\CallRecordingsDataSet.xsd"))
  {
    schemaContent = reader.ReadToEnd();
  }

  string output = string.Empty;

  using (CSharpCodeProvider cscp = new CSharpCodeProvider())
  {
    CodeCompileUnit ccu = new CodeCompileUnit();
    CodeNamespace cn = new CodeNamespace("DataSet.Generation.Test");

    output = TypedDataSetGenerator.Generate(schemaContent, ccu, cn, cscp,
                                            TypedDataSetGenerator.GenerateOption.HierarchicalUpdate);

    using (StringWriter codeWriter = new StringWriter())
    {
      // *** this line causes full generation as expected ***
      cscp.GenerateCodeFromNamespace(cn, codeWriter, null);
      cscp.GenerateCodeFromCompileUnit(ccu, codeWriter, null);

      output = codeWriter.ToString();
    }
  }

  using (StreamWriter writer = new StreamWriter(@"C:\test-tmp\CallRecordingsDataSet.Designer.cs"))
  {
    writer.Write(output);
  }

编辑:玩了一会儿,发现我必须添加对CodeDomProvider.GenerateCodeFromNamespace()CodeDomProvider.GenerateCodeFromCompileUnit() 的调用(在上面的代码中注释)。现在完美运行!

【问题讨论】:

    标签: c# .net code-generation


    【解决方案1】:

    自己解决了,看问题中的cmets。

    【讨论】:

      猜你喜欢
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多