1.什么是ORM?
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
2.Snake.Net中ORM的特点与概述:
Snake.Net框架是基于.Net的应用而设计的,它和其他一些移植于Java的ORM应用构架不同,是完全根据.Net的特点设计和开发。
Snake.Net框架使用一个完整的DataSet构架(见图2-1-1),用以描述一个应用项目所涉及的数据结构(包括可描述性的表结构、关键字、外部关键字以及表与表之间的关系等)。并使用特定的方法,将DataSet构架内所描述的数据表、数据列、关键字、表之间的关联关系与具体的业务实体对象进行映射,并实现业务实体对象的数据访问。
图 2-1-1 描述对象的数据结构构架(DataSet)
3.数据库联接的设置:
ORM系统是与数据库进行交互操作,和数据库的连接就成为最首要的话题。Snake.Net框架支持业务实体对一个或多个不同类型的数据库的访问支持,在框架内可以使用两种方法设置数据库连接:使用配置文件和运行时设置。
Snake.Net允许在一个系统中可以同时使用多个数据库配置。同时提供了对不同种类的数据库具有广乏的支持,几乎可以使用当前所有主流的数据库产品。
(1)使用配置文件
Snake.Net配置文件的详细说明将在以后章节叙述,这里指简单介绍一下。在Snake.Net配置文件里可以设置一个或多个<database>节点,每个database节点使用属性name作为唯一标识。(如图2-1-1)。<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<eastaspObjects>
<database name="database1" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sample.mdb;" typeName="Eastasp.Framework.Data.MSAccess.MSAccessDbConnectionString, Eastasp.Framework.Data"/>
<application name="default" database="database1"> </application>
<object name="eastasp.samples.order" database="database1"> </object>
</eastaspObjects>
</configuration>
<configuration>
<eastaspObjects>
<database name="database1" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sample.mdb;" typeName="Eastasp.Framework.Data.MSAccess.MSAccessDbConnectionString, Eastasp.Framework.Data"/>
<application name="default" database="database1"> </application>
<object name="eastasp.samples.order" database="database1"> </object>
</eastaspObjects>
</configuration>
图 2-1-1 配置文件中设置数据库连接
(2)运行时设置
在Eastasp.Enterprise.Data命名空间下的DatabaseManagement对象,使用其静态方法SetDataBase设置数据库连接。使用方法如下代码
DatabaseManagement.SetDataBase("database1", new MSAccessDbConnectionString(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path; "));
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path; "));
DatabaseManagement.SetDataBase("database2", new MSSqlDbConnectionString (
"Initial Catalog=database;Data Source=(local);Integrated Security=SSPI;"));
"Initial Catalog=database;Data Source=(local);Integrated Security=SSPI;"));