Telerik OpenAccess ORM and the XML Metadata Source

原文地址:Telerik OpenAccess ORM and the XML Metadata Source

Telerik OpenAccess ORM and the XML Metadata Source

Friday, April 23, 2010

我们都知道Telerik OpenAccess ORM在2010年Q1版本发布的时候有了全新的面孔,所以这是发个博客谈谈这个新的可视化控件的一些特性和改进。今天我来谈谈新版的OpenAccess ORM最重大的改变之一,也就是XML – only映射。你们都知道之前这个产品所有的版本的映射信息是在混合定义在一些XML配置文件和CLR属性中的。通过很多客户的反馈和深思熟虑,我们决定使XML和属性分开独立作为你的模型元信息的源。你可以选择一个你自己喜欢。


我将从一个新的XML映射定义的简要概述开始。在以前的版本中,所有的XML映射信息分散在app.config和reversemapping.config文件中,现在它由可视化设计器生成并保存在[YourModelName].rlinq文件中。
当你用XML编辑器打开这个.rilnq文件的时候,可以看到很多信息。但是最后被OpenAccess运行时使用的模型映射信息是在节点里的。下面是一个类节点在新版中的例子:

< orm:class name ="Category" class-id ="1000177242">
  
< orm:table name ="Categories"   />
   <
orm:identity >
     
< orm:key-generator name ="autoinc"   />
      <
orm:single-field field-name ="categoryID"   />
   </
orm:identity >
  
< orm:field name ="categoryID" property ="CategoryID" null-value ="none" type ="System.Int32">
     
< orm:column name ="CategoryID" sql-type ="int" nullable ="false" scale ="0" primary-key ="true" backend-calculated ="true" ado-type ="Int32"   />
   </
orm:field >
  
< orm:field name ="categoryName" property ="CategoryName" null-value ="none" type ="System.String">
      
< orm:column name ="CategoryName" sql-type ="nvarchar" nullable ="false" length ="15" scale ="0" ado-type ="Varchar"   />
    </
orm:field >
...

我们尽力使映射架构更直观-便于阅读和编辑。虽然可以手动修改设置,但是我强烈建议你通过可视化设计器来编辑。

你是怎么通过XML来定义元数据源的?

当你选择使用XML作为元数据源的时候(这是模型设置对话框的默认选项),OpenAccess执行一个MSBuild任务来提取映射信息并作为你的模型程序集的源嵌入其中

image

下面是通过XmlMetadataSource获取模型元数据的例子:

MetadataSource metadataSource = XmlMetadataSource.FromAssemblyResource("EntityDiagrams1.rlinq"); 
NorthwindEntityDiagrams context = new NorthwindEntityDiagrams("MyConnection", null, metadataSource); 
	

如果你在其他的程序集中执行这段代码-比如在一个引用你的模型程序集的网络应用,你还需要在程序集中指定.rlinq文件的位置。

Assembly modelAssembly = typeof(Customer).Assembly; 
MetadataSource metadataSource = XmlMetadataSource.FromAssemblyResource(modelAssembly,"EntityDiagrams1.rlinq"); 
	

XmlMetadataSource类是一个读取和发送一个模型元数据信息给OpenAccess运行时的类。它使你可以灵活的使用元数据源,用不同的初始化方法创建一个模型。比如你可以像例子一样从一个程序集的嵌入资源中获取模型,但是也可以从文件流中获取,或者是直接传入的XML字符串和硬盘某个地方一个XML文件。所以,你甚至根本不需要单独的.rlinq文件。
在此你可以使用这个API来调用由持久化类生成的新的OpenAccessContext类(你可以自己创建一个,也可以从OpenAccessContext基类派生一个类),也可以使用现有的IObjectScope API(对于给予IObjectScope的老项目特别有用)

下面是一个例子:

Assembly modelAssembly = typeof(Customer).Assembly; 
MetadataSource metadataSource = XmlMetadataSource.FromAssemblyResource(modelAssembly, EntityDiagrams1.rlinq"); 
MetadataContainer metadata = metadataSource.GetModel(); 
Database database = Database.Get("DbConnection", new BackendConfiguration(), metadata); 
IObjectScope scope = database.GetObjectScope(); 
	

总之,概括的说,XML元数据源只是你能用来表示OpenAccess映射元数据的一种方法,通过可视化设计器可以非常方便的使用。它是大多数不需要修改任何映射信息场景时的最佳选择。关于手动生成和操作映射,属性元数据源会是个好选择。这是我们稍后讨论的话题,敬请关注。

文件类型:开发版 非商业 非试用 分卷:1(共2) 软件介绍: Telerik OpenAccess是一个企业级的ORM,它在桌面和web应用中提供数据存取管道,同时支持正向和反向映射,为你的DAL和商业对象提供透明的展现。 OpenAccess ORM与Visual Studio紧密整合,并允许你无缝地创建数据库独立的代码。通过自定义工具和利用其用于代码优化及缓存的先进功能完全地控制生成代码。 难以置信的效率 缩减10倍的数据访问代码,大幅度提高了开发效率,减少DAL中的错误。 正向和反向影射 你能够从数据库或从你的持久化类开始。 OpenAccess能够从原有的数据库开始,创建对象模型,甚至让你编辑对象模型。另外,你也可以从你的持久化类模型开始并且推动这些到数据库。 OpenAccess支持丰富的集合和类继承影射。 支持LINQ 当你查询你的数据库时使用熟悉的LINQ架构。假如这还不够,它还提供2种其它选项,标准的OQL和直接SQL。不管什么语言,它提供的一切方法为让轻松地查询你的数据。 建立时字节码增强 没有源代码生成,简单化理解持久化类。 易测性 持久化类能够被用作商业类。OpenAccess 中的所有类独立工作,并能够简单地进行先进的单元测试。因此,SQL代码能够被跟踪,跟踪结果输出到控制台,文本文件或.NET跟踪框架。性能计数器显示你运行的应用程序,Website或应用服务器的状态。 缓冲 OpenAccess 有独特的缓冲特征优化数据处理:连接池设置,编译的查询缓冲/准备好的声明缓冲,一级缓冲,分布的二级缓冲等。 数据库独立的代码 OpenAccess支持几乎所有的商业数据库,如 Microsoft SQL Server, Oracle and MySQL。 原生的.NET API和ZERO reflection OpenAccess支持几乎所有的商业数据库,如 Microsoft SQL Server, Oracle and MySQL。OpenAccess使用标准的.NET公约和idioms。 你可以使用继承,多态,复合和.NET集合框架,包括通用集合。 Visual Studio整合 利用是熟悉的环境,强大的向导允许你只要点击鼠标就能设置持久化模型。为所有平台使用数据源做的大部分工作与代码无关。OpenAccess完全继承到Microsoft Visual Studio并支持所有IL兼容的语言。OpenAccess支持TFS或其它SCM系统中的所有源代码。 多级支持 容易直接地发送持续数据,或用OpenAccess对象容器。 OpenAccess仔细跟踪变化/懒装入和所有必要的盲目并发信息。 代码优化 OpenAccess允许你优化SQL生成,不仅在查询时,而且在对象导航模型导航时。Fetch Plan被用于查询的初始结果获取,并导航到还没有放入内存的数据。这使你能够在一个通用节点树上优化导航并总是同时获取3级。 透明的持久化 支持分布式系统 在新兴的移动和Web 2.5的世界,你的.NET应用需要支持各种断开的情景,任何地方,任何时间。与你部分数据在断开模式下工作,Vanatec OpenAccess提供对象容器,它轻量,紧凑并且容易使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值