Mat*_*eid 4 c# .net-4.0 dataset strongly-typed-dataset
我正在将我们的DAL类库迁移到.NET 4(从.NET 3.5).我们经常使用类型化数据集,我们经常迭代表:
foreach(var row in ds.MyTable) var tmp = row.ID;
Run Code Online (Sandbox Code Playgroud)
这不再起作用,因为设计人员更改了数据集的代码,以便表格不再来自TypedTableBase<T>,而是来自DataTable(并实现非泛型IEnumerable).这就是差异所显示的.因此,该行在object编译时是类型的.
有人知道这是否是通常的行为?目前,我正在按照下面所示的方式进行,但我希望有一个更优雅的解决方案:
foreach(var row in ds.MyTable.Cast<MyDs.MyRow>()) var tmp = row.ID;
Run Code Online (Sandbox Code Playgroud)
小智 11
刚刚遇到这个,并通过执行以下操作来纠正它:
在解决方案资源管理器中选择xsd文件,然后单击"运行自定义工具".将使用TypedTableBase而不是DataTable和IEnumerable重新生成设计器文件.
接受的答案大部分都是完整的,但不能完全解决问题.
这是我在这个问题上的问答的再现.
简而言之,MSDataSetGenerator工具运行时会出现问题,但System.Data.DataSetExtensions程序集尚未加载到当前的Visual Studio进程中.
加载程序集的一种方法是打开任何XSD文件,然后重新生成设计器代码.
以下步骤应生成相应的设计器文件:
Run Custom Tool在以下错误票证中也向Microsoft报告了此问题: