微型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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!