本文的发布号曾为 CHS307989
有关本文的 Microsoft Visual Basic .NET 版本,请参见
307170。
本文引用下面的 Microsoft .NET 框架类库名称空间:
本文引用下面的 Microsoft .NET 框架类库名称空间:
- System.Data.Common
- System.Data.OleDb
症状
在 ADO.NET 中使用数据集列映射时,如果将 MissingMappingAction 属性设置为 Error,但缺少您指定的列映射,则会引发 InvalidOperationException 异常。解决方案
若要解决此问题,请确保您指定的列映射存在。有关检查指定的列映射是否存在的代码,请参阅"更多信息"一节。更多信息
再现现象的步骤
- 启动 Microsoft Visual Studio .NET。
- 在 Visual C# .NET 中新建一个 Windows 应用程序项目。默认情况下会将 Form1 添加到项目中。
- 确保您的项目包含一个对 System.Data 名称空间的引用,如果未包含,请添加一个对此名称空间的引用。
- 将一个 Command 按钮放在 Form1 上,将其 Name 属性更改为 btnTest。
- 对 System、System.Data、System.Data.Common 和 System.Data.OleDb 名称空间使用 using 语句,这样,在后面的代码中就不需要限定这些名称空间中的声明了。
using System; using System.Data; using System.Data.Common; using System.Data.OleDb;
- 切换到"窗体"视图,然后双击按钮以添加 Click 事件处理程序。将下面的代码添加到处理程序:
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(); myDataAdapter.TableMappings.Add("Categories", "DataCategories"); String myMessage; myMessage = "Table Mappings:/n"; System.Int32 i; for (i=0 ; i <= myDataAdapter.TableMappings.Count -1 ; i++) { myMessage += i.ToString() + " " + myDataAdapter.TableMappings[i].ToString(); } System.Diagnostics.Debug.WriteLine(myMessage); DataTableMapping myNewMapping1 = new DataTableMapping(); //Uncomment the following if statement to check if the specified column mapping exists. //if (myDataAdapter.TableMappings.Contains("Categories1")) { myNewMapping1 = DataTableMappingCollection.GetTableMappingBySchemaAction (myDataAdapter.TableMappings, "Categories1", "", MissingMappingAction.Error); }
- 保存项目。在调试菜单上,单击启动,然后运行您的项目。
- 单击该按钮。注意,您会收到上面提到的异常。
- 若要解决此问题,请取消注释代码示例中的"if"循环,然后再运行该项目。因为"if"循环会检查指定的列映射是否存在,所以您不会再收到该异常。
参考
有关 ADO.NET 对象和语法的更多信息,请参阅以下 Microsoft .NET 框架软件开发工具包 (SDK) 文档:使用 ADO.NET 访问数据
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaccessingdatawithadonet.asp
这篇文章中的信息适用于:
- Microsoft ADO.NET(随 .NET 框架一起提供)
- Microsoft Visual C# .NET (2002)
最近更新: | 2002-6-17 (1.0) |
关键字 | kbDSupport kbGrpDSMDAC kbGrpDSVBDB kbOLEDB kbprb kbSystemData KB307989 |