4. 持久数据层对ORM支持
NHibernate中,每一个实体类都对应一个XML文件,个人看来有些复杂,因此,在此框架中,做了创新:
以下是自动生成的UserInfo.cs文件实体类完整代码:
using System;
using System.Data;
/****************************************************
*
* Automatically Created by Zivsoft.Data.ORM.Setup
*
*****************************************************/
namespace Zivsoft.Data.ORM.Table
{
public class UserInfo:OrmTable
{
#region UserId
[PrimaryKey("UserId",DbType.String)]
public ColumnValue<string> UserId{
get{
return new ColumnValue<string> { Name = "UserId", Value = GetString("UserId");
}
set{
Fields["UserId"]=value.Value;
}
}
#endregion
#region Password
[Column("Password",DbType.String)]
public ColumnValue<string> Password{
get{
return new ColumnValue<string> {Name = "Password", Value = GetString("Password")};
}
set{
Fields["Password"]=value.Value;
}
}
#endregion
#region LoginTime
[Column("LoginTime",DbType.DateTime)]
public ColumnValue<DateTime?> LoginTime{
get{
return new ColumnValue<DateTime?> {
Name = "LoginTime", Value = GetDateTime("LoginTime")
};
}
set{
Fields["LoginTime"]=value.Value;
}
}
#endregion
}
}
using System.Data;
/****************************************************
*
* Automatically Created by Zivsoft.Data.ORM.Setup
*
*****************************************************/
namespace Zivsoft.Data.ORM.Table
{
public class UserInfo:OrmTable
{
#region UserId
[PrimaryKey("UserId",DbType.String)]
public ColumnValue<string> UserId{
get{
return new ColumnValue<string> { Name = "UserId", Value = GetString("UserId");
}
set{
Fields["UserId"]=value.Value;
}
}
#endregion
#region Password
[Column("Password",DbType.String)]
public ColumnValue<string> Password{
get{
return new ColumnValue<string> {Name = "Password", Value = GetString("Password")};
}
set{
Fields["Password"]=value.Value;
}
}
#endregion
#region LoginTime
[Column("LoginTime",DbType.DateTime)]
public ColumnValue<DateTime?> LoginTime{
get{
return new ColumnValue<DateTime?> {
Name = "LoginTime", Value = GetDateTime("LoginTime")
};
}
set{
Fields["LoginTime"]=value.Value;
}
}
#endregion
}
}
通过以上实体类,可以看出只有得到这个类,对应数据库表所有字段、类型、表名信息全部可以得到。
比如,得到表名的信息:
var name=new UserInfo().GetName();
得到字段UserId的对应数据库名称:
var name=new UserInfo().UserId.Name;
另外,所有实体类,都可以通过框架自制工具根据数据库生成实体类代码。