使用介绍
1.配置文件配置好连接串
connectionName的值对应连接串的name
2.定义好实体
public classBook
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]public int? BookID { get; set; }public string BookName { get; set; }public int? AuthorID { get; set; }
[NotMapped]public string AuthorName { get; set; }public double? Price { get; set; }public DateTime? PublishDate { get; set; }
}
增删改查 目前支持sqlserver、mysql、oracle
增加
using (DNetContext db = newDNetContext())
{var authorid = db.Add(new Author { AuthorName = "张三", Age = 30, IsValid = true});
db.Add(new Book { BookName = "从入门到放弃", Price = 20.5, PublishDate = DateTime.Now, AuthorID =authorid });
}
修改
using (DNetContext db = newDNetContext())
{int authorid = db.GetMax(m => (int)m.AuthorID);
db.Update(m => m.AuthorName = "恶魔猎手", m => m.AuthorID ==authorid);
}
删除
using (DNetContext db = newDNetContext())
{var author = db.GetSingle(m => true, q => q.OrderBy(m =>m.AuthorID));var effect =db.Delete(author);int authorid = db.GetMax(m => (int)m.AuthorID);
db.Delete(m => m.AuthorID ==authorid);
}
查询
单表查询
支持以下sql格式
like
Contains、StartsWith、EndsWith
in
Contains 集合类
upper lower
ToUpper、ToLower
sql字符大小比较
CompareTo、Equals
charindex instr
IndexOf
is null or = ‘‘
IsNullOrEmpty
类型转化、时间格式化
ToString
整型转化
ToInt32
trim
TrimStart、TrimEnd、Trim
using (DNetContext db = newDNetContext())
{var author = db.GetSingle(m => true, q => q.OrderBy(m =>m.AuthorID));
author= db.GetSingle(m => m.AuthorName.Contains("李四") && m.IsValid == true);var authors= db.GetList(m => m.AuthorName.StartsWith("张三") && m.IsValid == true);//获取动态类型
List name = db.GetDistinctList(m => m.AuthorName.StartsWith("王五") && m.IsValid == true,m=>m.AuthorName);
List name1 = db.GetDistinctList(m => m.AuthorName.StartsWith("王五") && m.IsValid == true, m =>m.AuthorName);//获取最大值
var authorid = db.GetMax(m => (int)m.AuthorID);//动态查询
WhereBuilder where = new WhereBuilder();where.And(m=>m.AuthorName.Contains("张三"));where.And(m => m.AuthorID==3);where.Or(m=>m.IsValid==true);
db.GetList(where.WhereExpression);//分页参数由前台传来
PageFilter page = new PageFilter { PageIndex=1, PageSize=10};
page.And(m=> "守望者的天空".Contains(m.AuthorName));
page.OrderBy(q=>q.OrderBy(m=>m.AuthorName).OrderByDescending(m=>m.AuthorID));
PageDataSource pageSource= db.GetPage(page);
}
多表查询
using (DNetContext db = newDNetContext())
{var books = db.JoinQuery.LeftJoin((m, n) => m.AuthorID == n.AuthorID && n.IsValid == true)
.Fields((m, n) => new{ m, n.AuthorName })
.OrderByAsc(m =>m.BookName)
.Select();var join = db.JoinQuery.LeftJoin((m, n) => m.AuthorID == n.AuthorID && n.IsValid == true)
.Fields((m, n) => new{ m, n.AuthorName })
.OrderByAsc(m =>m.BookName);
PageFilter page= new PageFilter { PageIndex = 1, PageSize = 10 };//分页参数前台传来
join.SelectPage(page);
}
事务的支持
using (DNetContext db = newDNetContext())
{
db.DataBase.BeginTransaction();try{
List authors = new List();for (int i = 0; i <= 100; i++)
{
authors.Add(new Author { AuthorName = "测试" + i.ToString(), Age = 20, IsValid = true});
}
db.Add(authors);
db.DataBase.Commit();
}catch{
db.DataBase.Rollback();
}
}
SQL语句查询的支持
using (DNetContext db = newDNetContext())
{
StringBuilder sql= newStringBuilder();
List parameters = new List();
sql.AppendFormat(@"SELECT {0},A.AuthorName FROM Book B
LEFT JOIN Author A ON A.AuthorID=B.AuthorID WHERE", SqlBuilder.GetSelectAllFields("B"));
sql.Append("B.BookID>@BookID");
parameters.Add(db.GetDbParameter("BookID",1));
PageDataSource books = db.GetPage(sql.ToString(),new PageFilter { PageIndex=1, PageSize=5}, parameters.ToArray());
List bks = db.GetList(sql.ToString(), parameters.ToArray());
}
欢迎技术讨论
最新代码下载
https://files.cnblogs.com/files/DNetORM/DNet.ORM4.0.rar
原文:http://www.cnblogs.com/DNetORM/p/8000373.html