ADO.NET 2.0 中的架构

时间:2010-03-09 11:59:31  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:sp;         下载相关的 SchemasSample.exe 示例代码。      本页内容    深入了解新的公共元数据 API    究竟谁需要元数据?    我能得到什么样的元数据?    Restrictions    DataSourceInformation  &...
  正文:适用于:
  Microsoft ADO.NET 2.0
  Microsoft Visual Studio 2005
  C# 编程语言
  
  摘要:了解在 ADO.NET 中对于从您的数据源访问元数据的增强支持。
  
  
  
  下载相关的 SchemasSample.exe 示例代码
  
  本页内容
   深入了解新的公共元数据 API
   究竟谁需要元数据?
   我能得到什么样的元数据?
   Restrictions
   DataSourceInformation
   自定义并扩展元数据
   用户自定义
   小结:元数据支持的最终部分
  
  深入了解新的公共元数据 API
  在我的前一篇文章,我指出 Visual Studio 2005 服务器资源管理器现在使用一个包含了 .NET 数据提供程序(而不是 OLE DB 提供程序)列表的对话框来提示连接信息。当您确定一个连接字符串并添加数据连接时,每个数据连接也显示一个关于通过连接直接可见的数据库对象(如表、视图和存储过程)的信息的树形结构。但这些信息来自哪里呢?难道是 Visual Studio 仅为某些数据提供程序硬编码来生成这个信息,而假如我编写我自己的数据提供程序或者从第三方购买一个的时候,就留给我一个空节点?不,在 Visual Studio 2005 中并不是这样。由于 ADO.NET 2.0 中的新架构 API,所有这些有用的信息都将提供给您。我不知道这是否是 Visual Studio 做到它的方法,但是这里就是使用新的 API 来获得一个数据库中的表的列表的代码。
  
  // uses a ADO.NET 2.0 named connection string in config file
  // uses ADO.NET 2.0 ProviderFactory and base classes
  // see previous article
  public static void GetListOfTables(string connectstring_name)
  {
   ConnectionStringSettings s =
   ConfigurationSettings.ConnectionStrings[connectstring_name];
   DbProviderFactory f = DbProviderFactories.GetFactory(s.ProviderName);
   using (DbConnection conn = f.CreateConnection())
   {
   conn.ConnectionString = s.ConnectionString;
   conn.Open();
  
   DataTable t = conn.GetSchema("Tables");
   t.WriteXml("tables.xml");
   }
  }
  
  返回页首
  究竟谁需要元数据?
  元数据是每个数据访问 API 的一部分。尽管元数据的主要使用者是像 Visual Studio 这样的工具或者像 DeKlarit 这样的代码生成器,但是它们并不是惟一的使用者。应用程序包设计师可能允许最终用户通过向现有的表添加新表或新列来自定义一个应用程序。当最终用户如此改变了数据库架构时,一个通用查询和修改工具可以在维护、备份和其他应用程序函数中使用元数据来包含用户的新表,就像它们是应用程序附带的内置表一样。程序员可以使用元数据来编写他们自己的派生自 System.Data.Common.DbCommandBuilder的自定义类,并为使用 DataSet 创建插入、更新和删除命令。多数据库应用程序(即设计为在用户选择的数据库上运行的应用程序)的构建者可以尽可能多地使用元数据来维护公共代码库,在需要时优化数据访问代码。
  
  通过一般元数据 API 来公开元数据要比让每个使用者使用特定于数据库的 API 要好。这样,工具编写人员可以维护一个可管理性更好的代码库。这样的 API 还必须是非常灵活的,因为在编写一般 API 来公开元数据时有四个障碍需要考虑。
  
  1.
   元数据集合和信息在数据库间是有差别的。例如,SQL Server 用户可能想要公开一个链接服务器的集合,但是 Oracle 用户可能对关于 Oracle 序列的信息感兴趣。
  
  2.
   不仅在不同的数据库产品中,而且即使在相同数据库的不同版本中,存储公共数据库元数据的基础系统表都是不同的。例如,SQL Server 2005 使用在一个“sys”架构下的新表(例如,sys.tables)公开它的元数据,而 SQL Server 以前的版本使用元数据表(如 sysobjects£©来存储相同的数据。
  
  3.
   不同的程序可能有不同的元数据视图。以一个例子来说,许多程序员抱怨 Oracle 数据库中表的列表太长,因为大多数元数据 API 将“system”表与用户表混在一起。他们想要一个仅由他们定义的表组成的短列表。
"ADO.NET 2.0 中的架构"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13149.html

 1/7    1 2 3 4 5 6 下一页 尾页


关键字:

关于《ADO.NET 2.0 中的架构》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td