Lucas.ORM
持久层框架使用说明
Lucas.ORM
是个简单的持久层框架,可以实现对实体的基本操作(新增,修改,删除,查询)。系统使用
Attribute
作为描述映射的方法,程序员只需要学会
Persist
提供的方法就可以完成对实体的基本操作。
目前,
Lucas.ORM
运行环境
.NET Framework 2.0.
下面给出利用
Lucas.ORM
开发的具体例子:
在
VS2005
下新建个
Window Console
项目,并添加对
Lucas.ORM
的引用。并添加一个类:
[DataTable("TUser")]
public class User
{
private string userID;
[DataColumn("UserID", DbType.String,IsPrimaryKey=true)]
public string UserID
{
get { return userID; }
set { userID = value; }
}
private string password;
[DataColumn("Password", DbType.Stringe)]
public string Password
{
get { return password; }
set { password = value; }
}
private string question;
[DataColumn("Question", DbType.String)]
public string Question
{
get { return question; }
set { question = value; }
}
private string answer;
[DataColumn("Answer", DbType.String)]
public string Answer
{
get { return answer; }
set { answer = value; }
}
private DateTime registerTime;
[DataColumn("RegDate", DbType.DateTime)]
public DateTime RegisterTime
{
get { return registerTime; }
set { registerTime = value; }
}
}
|
类中第一行
[DataTable("TUser")]
表是类
User
映射到数据库表TUser. [DataColumn("UserID", DbType.String,IsPrimaryKey=true)]表是字段UserID,字符串类型,并且是关键字,如果不是关键字的字段,不需要指明IsPrimaryKey.
下面代码演示如何了如何将
User
对象添加到数据库中:
User
user = new User();
user.UserID = "tigerlgf";
user.Password = "password";
user.Question = "who are you?";
user.Answer = "lucas";
user.RegisterTime = DateTime.Now;
if (!persist.Save(user))
{
Console.WriteLine("
保存出错!"
);
}
else
{
Console.WriteLine("
保存成功!"
);
}
|
如果你觉得对象有些这段不需要插入到数据库,还有另一种方法:
FieldValueCollection
fields = new FieldValueCollection();
fields.Add("UserID", "
张三"
);
fields.Add("Question", "who is your girl-friend?");
fields.Add("Answer", "Shu");
if (persist.Save<User>(fields))
{
Console.WriteLine("
保存成功!"
);
}
else
{
Console.WriteLine("
保存出错!"
);
}
|
更新对象
:
User
user = new User();
user.UserID = "lucas";
user.Password = "password";
user.Question = "who are you?";
user.Answer = "lucas";
user.RegisterTime = DateTime.Now;
if (!persist.Update(user))
{
Console.WriteLine("
保存出错!"
);
}
else
{
Console.WriteLine("
保存成功!"
);
}
|
对象更新时按关键字更新,系统先查找
UserID
等于
lucas
的记录,然后更新。
删除对象:
User
user = new User();
user.UserID = "lucas";
user.Password = "password";
user.Question = "who are you?";
user.Answer = "lucas";
user.RegisterTime = DateTime.Now;
if (!persist.Delete(user))
{
Console.WriteLine("
删除出错!"
);
}
else
{
Console.WriteLine("
删除成功!"
);
}
|
或者:
FieldValueCollection
fields = new FieldValueCollection();
fields.Add("UserID", "
张三"
);
if (persist.Delete<User>(fields))
{
Console.WriteLine("
保存成功!"
);
}
else
{
Console.WriteLine("
保存出错!"
);
}
|
查询对象:
List
<User> dt = (List<User>) persist.Query<User>();
foreach
(User user in dt)
{
Console.WriteLine("{0}|{1}|{2}|{3}|{4}", user.UserID, user.Password, user.Question, user.Answer, user.RegisterTime);
}
|
或者:
List
<User> users = (List<User>)persist.Query<User>("UserID='lucas'");
foreach
(User user in users)
{
Console.WriteLine("{0}|{1}|{2}|{3}|{4}", user.UserID, user.Password, user.Question, user.Answer, user.RegisterTime);
}
|
Persist.Query<T>
()
提供多种重载方法,返回结果为
List<T>
类型。
Persist.Query<T>
()
查询数据库表中所有记录;
Persist.Query<T><T>(string filter)
按条件查询;
Persist.Query<T>(int pageSize, int pageNo)
分页查询
Persist.Query<T>(string filter, int pageSize, int pageNo)
条件加分页;
Lucas.ORM
需要
Lucas.Data.DLL
和
Lucas.Log.DLL
两个组件的支持,并且需要在应用程序配置文件中配置。
Lucas.ORM
配置,以下项目为例的
App.Config
文件:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="Lucas.Data" type="Lucas.Data.DataPropertyConfigurationHandler,Lucas.Data"/> </configSections> <Lucas.Data> <DatabaseProperty name="Default"> <DatabaseType>OleDb</DatabaseType> <ConnectionString>Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Blog.mdb;User ID=Admin;Password=;</ConnectionString> </DatabaseProperty> </Lucas.Data> <appSettings> <add key="DebugFile" value="Log.xml"/> </appSettings> </configuration> |
配置说明:
<Lucas.Data>
配置节是数据库配置。
DatabaseType
是指数据库的类型:目前只支持三种:
OleDb,Oracle,MSSQLServer;
数据库连接字符串放在
ConnectionString
中。
Name="Default"
是指默认的数据库,且是必须的。这样就配置好了数据库。
DebugFile
配置节是用来记录错误或异常日志的。