307989 PRB:Visual C# .NET 应用程序中缺少指定的列时数据集列映射引发 InvalidOperationException (From MKBA)

本文的发布号曾为 CHS307989
有关本文的 Microsoft Visual Basic .NET 版本,请参见 307170

本文引用下面的 Microsoft .NET 框架类库名称空间:
  • System.Data.Common
  • System.Data.OleDb

症状

在 ADO.NET 中使用数据集列映射时,如果将 MissingMappingAction 属性设置为 Error,但缺少您指定的列映射,则会引发 InvalidOperationException 异常。

解决方案

若要解决此问题,请确保您指定的列映射存在。有关检查指定的列映射是否存在的代码,请参阅"更多信息"一节。

更多信息

再现现象的步骤

  1. 启动 Microsoft Visual Studio .NET。
  2. 在 Visual C# .NET 中新建一个 Windows 应用程序项目。默认情况下会将 Form1 添加到项目中。
  3. 确保您的项目包含一个对 System.Data 名称空间的引用,如果未包含,请添加一个对此名称空间的引用。
  4. 将一个 Command 按钮放在 Form1 上,将其 Name 属性更改为 btnTest
  5. SystemSystem.DataSystem.Data.CommonSystem.Data.OleDb 名称空间使用 using 语句,这样,在后面的代码中就不需要限定这些名称空间中的声明了。
    using System;
    using System.Data;
    using System.Data.Common;
    using System.Data.OleDb;
  6. 切换到"窗体"视图,然后双击按钮以添加 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);
        }
  7. 保存项目。在调试菜单上,单击启动,然后运行您的项目。
  8. 单击该按钮。注意,您会收到上面提到的异常。
  9. 若要解决此问题,请取消注释代码示例中的"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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值