在园子里,打上remoting一搜,肯定出来 不下于上百的文章介绍,ORM介绍在园子一样也多,肯定你会说你都这么多人介绍了你还在这儿"显丑",其实我认为各有各的特点,如果你有什么意见或建议可以直接和我联系.
其实在我们现在多数的以数据库为主的应用编程中,ORM在数据库的操作方面能够方便而且提高我们的编程效率.但是也有它的不足处,不管这么多了,肯定有得必有失.(这儿有一篇说ORM的文章,好坏好像都提到了) 其实我也不能强说我下面介绍的是ORM,只是我觉得方便应用而已.
我所引用的这个是在http://www.codeproject.com/KB/database/LightORMLibrary.aspx 的项目,是Sergey Busel 发表过的,我也不多说了,也就直接拿过来用.
简单的介绍一下它的应用吧:(不建议应用到项目中,可能效率不高.)
按作者原意就是一个简单的ORM操作类库,称为轻量级ORM,(可能翻译得有错,请谅解),当中有几个关键:
1:实体属性字段的映射.见代码TableAttribute.cs,MappingAttribute.cs
前面是数据库表名到实体的映射,后面是数据库字段到实体的映射,最后通过TableFactory.cs和Dao.cs把实体反射
得到数据库字段和表名组合成SQL语句操作数据库.这个过程中它把值和SQL相对应了起来.
园子中介绍这方面的文章太多了,我也不说了,如果实现不了朋友请加Q:57549144,我们可以相互交流一下.
(而在到后面我们把这个和我们要实现的remoting应用联系起来则要改变这个类很多东西.这儿只是让朋友们知道这个是怎么运作的.为后面我们应用打上一个应用基础.)
首先我们在SQL2000中建表
T_User

Code
1
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_User]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
2
drop table [dbo].[T_User]
3
GO
4
5
CREATE TABLE [dbo].[T_User] (
6
[U_Guid] [nvarchar] (36) COLLATE Chinese_PRC_CI_AS NOT NULL ,
7
[U_UserName] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
8
[U_UserPwd] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NULL ,
9
[U_UserRegTime] [datetime] NULL
10
) ON [PRIMARY]
11
GO
12
13
然后编写一个实体类:T_User然后按LightORMLibrary 提到的实体和数据库字段映射.(其实就是一个C#语言中属性的应用.)

Code

/**//// <summary>
/// 用户实体.
/// </summary>

T_User#region T_User
[Table("T_User", "dbo")]
class T_User

{
private String _u_Guid;
private String _u_UserName;
private String _u_UserPwd;
private DateTime? _u_UserRegTime;

/**//// <summary>
/// 实例化用户实体.
/// </summary>
public T_User()

{
}

/**//// <summary>
/// 记录GUID
/// </summary>
[Column("U_Guid", DbType.String, Size = 36, PrimaryKey = true, AutoIncrement = false)]
public String U_Guid

{

get
{ return _u_Guid; }

set
{ _u_Guid = value; }
}

/**//// <summary>
/// 用户名.
/// </summary>
[Column("U_UserName", DbType.AnsiString, 10)]
public String U_UserName

{

get
{ return _u_UserName; }

set
{ _u_UserName = value; }
}

/**//// <summary>
/// 用户密码
/// </summary>
[Column("U_UserPwd", DbType.AnsiString, 40)]
public String U_UserPwd

{

get
{ return _u_UserPwd; }

set
{ _u_UserPwd = value; }
}

/**//// <summary>
/// 用户注册时间.
/// </summary>
[Column("U_UserRegTime", DbType.DateTime, 8)]
public DateTime? U_UserRegTime

{

get
{ return _u_UserRegTime; }

set
{ _u_UserRegTime = value; }
}
}
#endregion
新建一个控制台应用程序名为fit_orm_ConsoleApp
然后添加实体类T_User到这个控制台应用程序中去
在在Main函数中写上操作数据库的逻辑

Code
static void Main(string[] args)

{
try

{
String _connStr = "Server=.;Database=fit;Uid=sa;Pwd=77131202";
SqlConnection connObj = new SqlConnection(_connStr);
Dao dao = new SqlServerDao(connObj);
MD5CryptoServiceProvider _md5 = new MD5CryptoServiceProvider();
//实体类数据实例化
T_User tUserModel = new T_User();
tUserModel.U_Guid = Guid.NewGuid().ToString();
tUserModel.U_UserName = "77131202";
//加密密码
tUserModel.U_UserPwd = BitConverter.ToString(_md5.ComputeHash(System.Text.Encoding.Default.GetBytes("77131202"))).Replace("-", "");
tUserModel.U_UserRegTime = System.DateTime.Now;

int _state = 0;
//数据库操作
connObj.Open();
_state = dao.Insert<T_User>(tUserModel);
connObj.Close();

if (_state == 1)

{
Console.WriteLine("添加数成功");
}
else

{
Console.WriteLine("添加数失败");
}
}
catch (Exception ex)

{
Console.WriteLine(ex.ToString());
}
Console.ReadLine();
}
最后就按F5,运行通过.在DAO类中还有好多方法,你可以去点点看,对我们现有的操作数据库都有了,可以加以扩展很方便的实用在我们的小项目中.
当中我所用到的这个数据操作工具很多都可以实现:什么nbear,Gentle....到google中打上关键字:orm .net 出来好多.
其实最重要的就是那个实体属性值到SQL的映射组合.大家可以参考http://www.codeproject.com/KB/database/LightORMLibrary.aspx
中提到的代码,也可以直接下载我的DEMO,当中也有.
这儿只简单介绍是为了后面作基础积累.
示例代码