【问题标题】:Typed Dataset not using TypedTableBase in .NET 4在 .NET 4 中未使用 TypedTableBase 的类型化数据集
【发布时间】:2011-05-27 00:41:34
【问题描述】:

我正在将我们的 DAL 类库迁移到 .NET 4(从 .NET 3.5)。我们经常使用类型化数据集,并且我们经常迭代表:

foreach(var row in ds.MyTable) var tmp = row.ID;

这不再起作用,因为设计者更改了数据集的代码,以便表不再从TypedTableBase<T> 派生,而是从DataTable 派生(并实现非通用IEnumerable)。这就是差异显示的内容。因此,该行在编译时为object 类型。

有人知道这是否是通常的行为吗?目前,我正在按照如下所示的方式进行操作,但我希望有一个更优雅的解决方案:

foreach(var row in ds.MyTable.Cast<MyDs.MyRow>()) var tmp = row.ID;

【问题讨论】:

  • 这是一个报告的从 .NET 4.0 到 .NET 4.5 的错误:BUG-733077

标签: c# .net-4.0 dataset strongly-typed-dataset


【解决方案1】:

所有这些都是正确的,但就我而言,我必须支持需要与 .Net 2.0 和 .Net 4.0 一起运行的源代码。我的目标是尽可能少地更改代码。

我的解决方案是在 .Net 4.0 下创建一个部分扩展并将其绑定到 4.0 应用程序。这看起来像:

namespace NamespaceOfMyDataSet
{
    public partial class MyDataSet : global::System.Data.DataSet 
    {
        public partial class MyTypedTable : global::System.Data.TypedTableBase<MyTypedTableRow> 
        {
            public System.Data.DataRowCollection GetRows()
            {
                return this.Rows;
            }
        }
    }
}

这就像一个魅力!!!

【讨论】:

    【解决方案2】:

    接受的答案大部分是完整的,但不会完全解决问题。
    这是我的question and answer on this issue 的复制品。

    问题:

    简而言之,当MSDataSetGenerator工具运行,但System.Data.DataSetExtensions程序集还没有加载到当前的Visual Studio进程中时,就会出现问题。

    解决方案:

    加载程序集的一种方法是打开任何 XSD 文件并然后重新生成设计器代码。

    以下步骤应生成适当的设计器文件:

    1. 在设计器视图中打开任何 XSD 文件(这会加载 DataSetExtensions.dll)
    2. 右键单击 XSD 并选择 Run Custom Tool

    这是完整的step by step walkthrough of the issue and solution with pictures

    其他实例:

    以下错误票证中也已向 Microsoft 报告了此问题:

    【讨论】:

    • 我们刚刚遇到了这个问题。感谢您指出必须为自定义工具加载 DataSetExtensions.dll 才能生成正确的代码!
    【解决方案3】:

    今天刚遇到这个问题,可以通过以下操作进行更正:

    在解决方案资源管理器中选择 xsd 文件,然后单击“运行自定义工具”。设计器文件将使用 TypedTableBase 而不是 DataTable 和 IEnumerable 重新生成。

    【讨论】:

    • 非常感谢。适用于完全良好! span>
    • 非常感谢!你用这个答案让我的一天。 span>
    • 非常感谢,工作就像魅力一样。
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多