微型ORM:MiniPoco

MiniPoco是一款适用于.Net 和Oracle的微小、快速的ORM。



MiniPoco有以下特色:

  • 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中。
  • 工作于严格的没有装饰的MiniPoco类
  • 基于Oracle.ManagedDataAccess.dll开发,无需安装Oracle客户端
  • Insert/Delete/Update/Save 等帮助方法。
  • 自动生成表结构SQL语句
  • 分页支持:自动得到总行数和数据
  • 支持简单的事务
  • 更好的支持参数替换,包括从对象属性中抓取命名的参数。

可以从这里获得MiniPoco:

  • CSDN:http://download.csdn.net/detail/qq243348167/9516256

代码展示:

首先,定义一个类:

    
[Table("ks_User", Display = "人员信息")]
    public class UserInfo
    {
        [Column(IsPrimaryKey = true, IsDbGenerated = false)]
        public Int32 ID { get; set; }
        [Column]
        [StringLength(30)]
        [Display("姓名")]
        public string UserName { get; set; }
        [Column]
        [Display("密码")]
        public string Password { get; set; }
        [Column]
        [Display("性别")]
        public Boolean Sex { get; set; }
        [Column]
        [Display("创建日期")]
        public DateTime CreateDate { get; set; }
    }

接下来,创建一个MiniPoco.Database,来执行查询:

    
using (MiniPoco.Database db = new MiniPoco.Database())
{
<span style="white-space:pre">	</span>var list = db.Query<userinfo>("select t.* from ks_User t");   
	foreach (var items in list)
	{
		Console.WriteLine(items.UserName);
	}
}

获取分页数据:

    
using (MiniPoco.Database db = new MiniPoco.Database())
{
	int total = 0;
	var list = db.GetPageList<userinfo>("select t.* from ks_User t where t.username like @0 order by id", 2, 15, out total, "%text%");
	Console.WriteLine(total);
	foreach (var items in list)
	{
		Console.WriteLine(items.UserName);
	}
}

Inserts、Updates 和 Delete。

MiniPoco提供了insert、update和delete操作的帮助。


新增记录

    
using (MiniPoco.Database db = new MiniPoco.Database())
{
	UserInfo user = new UserInfo();
	user.ID = 1;
	user.UserName = "text1";
	user.Sex = true;
	user.CreateDate = DateTime.Now;
	db.Insert<userinfo>(user);
	db.Save();
}

更新记录

<userinfo>
using (MiniPoco.Database db = new MiniPoco.Database())
{
	UserInfo user = new UserInfo();
	user.ID = 1;
	user.UserName = "text2";
	user.Sex = true;
	db.Update<userinfo>(user);
	db.Save();
}

删除记录

<userinfo><userinfo>
using (MiniPoco.Database db = new MiniPoco.Database())
{
	UserInfo user = new UserInfo();
	user.ID = 1;
	db.Delete<userinfo>(user);
	db.Save();
}

批量新增

<userinfo><userinfo>
using (MiniPoco.Database db = new MiniPoco.Database(DB))
{
	Console.WriteLine(DateTime.Now);
	for (int i = 0; i < 10000; i++)
	{
		UserInfo user = new UserInfo();
		user.ID = i + 1;
		user.UserName = "text" + i;
		user.Sex = true;
		user.CreateDate = DateTime.Now;
		db.Insert<userinfo>(user);
		if (i % 1000 == 0)
		{
			Console.WriteLine(i);
			db.Save();
		}
	}
	Console.WriteLine(DateTime.Now);
}

执行存储过程

<userinfo><userinfo>
using (MiniPoco.Database db = new MiniPoco.Database())
{
	//执行存储过程返回数据集
	db.QueryParameter<object>("exec 包名.存储过程名称 key", new MiniPoco.Parameter("key", "value", MiniPoco.Mapping.PocoDbType.String));
	//执行存储过程没有返回
	db.ExecuteParameter("exec 包名.存储过程名称 key", new MiniPoco.Parameter("key", "value", MiniPoco.Mapping.PocoDbType.String));
}

帮助生成表结构SQL语句

使用OracleHelper帮助类
string sql = MiniPoco.OracleHelper.GetCreateTable<userinfo>();
sql 输出结果
<userinfo><userinfo>create table ks_User (
ID NUMBER(32,0),
UserName  VARCHAR2(30),
Password  VARCHAR2(20),
Sex NUMBER(3,0),
CreateDate DATE
);
comment on table ks_User
is '人员信息';
comment on column ks_User.UserName
is '姓名';
comment on column ks_User.Password
is '密码';
comment on column ks_User.Sex
is '性别';
comment on column ks_User.CreateDate
is '创建日期';
 alter table ks_User
add constraint PK_ks_User_ID primary key (ID)

猜你喜欢

转载自blog.csdn.net/qq243348167/article/details/51371792
Orm
今日推荐