微型ORM:MiniPoco
阿新 • • 發佈:2018-11-04
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)