Animal ORM 开发指南
【1.创建表脚本(SQLSERVER举例)】
[Id] int DEFAULT ((0)) Primary key NOT NULL,
[Name] varchar(50) COLLATE Chinese_PRC_CI_AS DEFAULT '' NOT NULL,
[Sex] int DEFAULT ((0)) NOT NULL,
[Age] int DEFAULT ((0)) NOT NULL,
[Birthday] datetime DEFAULT ('1900-01-01') NOT NULL
)
【2.创建实体类(AnModel++工具)】
[Tiger("Person")]
public class PersonEntity
{
[Koala]
[Cat("Id")]
public int? Id { get; set; }
[Cat("Name")]
public string Name { get; set; }
[Cat("Sex")]
public int? Sex { get; set; }
[Cat("Age")]
public int? Age { get; set; }
[Cat("Birthday")]
public DateTime? Birthday { get; set; }
}
Tiger:表(Table)
Koala:主键(Primary Key)
Koala(ture):自增主键(Primary Key and Self growth)
Cat:列(Column)
【3.下载】
Animal.ORM.Core 下载
1.应用程序(Framework)版本>= .NET CORE 2.1
2.NUGET 安装命令:
3.选择需要安装的数据库客户端:
SqlServer
MySql
Oracle
SQLite
Animal.ORM.Framework 下载
1.应用程序(Framework)版本>= .NET Framework 4.6.1
2.NUGET 安装命令:
3.选择需要安装的数据库客户端:
SqlServer
MySql
Oracle
SQLite
【4.增删改查(CURD)】
Add
using Animal.ORM.Model;
var constr = "Data Source=localhost;Initial Catalog=reportserver;User Id=sa; Password=*******";
using ( IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
var person= new PersonEntity() { Id=1, Age = 26, Name = "ketty", Sex = 2, Birthday = new DateTime(2000, 9, 3) };
animal.Add(person);
}
Update
using ( IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
var person= new PersonEntity() { Id=1, Age = 26, Name = "Lilei", Sex = 2, Birthday = new DateTime(2000, 9, 3) };
animal.Save(person);
}
Read
using ( IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
var person = animal.SingleDog<PersonEntity>(1);
var person2 = animal.SingleDog<PersonEntity>(x=>x.Id==1); //Lamada Expression that return Single Entity
List<PersonEntity> personList = animal.FlyPigs<PersonEntity>(x=>x.Age>20); //Lamada Expression that return List
}
Delete
using ( IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
var result = animal.Delete<PersonEntity>(1);
var result2 = animal.Delete<PersonEntity>(x=>x.Id==1); //Lambda Expression
}
【5.ADO.NET】
ExeNQuery
using Animal.ORM.Model;
var constr = "Data Source=localhost;Initial Catalog=reportserver;User Id=sa; Password=*******";
using (IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
string sql = "INSERT INTO Person(Id,Name,Sex,Age,Birthday)values(@Id,@Name,@Sex,@Age,@Birthday)";
SqlParameter[] paras =
{
new SqlParameter("@Id", 6)
,new SqlParameter("@Name", "A")
,new SqlParameter("@Sex", 1)
,new SqlParameter("@Age", 1)
,new SqlParameter("@Birthday", DateTime.Parse("2009-01-01"))
};
animal.ExeNQuery(sql, paras);
}
ExeReader,ExeScalar,ExeAdapter
var constr = "Data Source=localhost;Initial Catalog=reportserver;User Id=sa; Password=*******";
using (IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
var sql = "select Id,Name,Sex from Person where Id=@Id";
SqlParameter[] paras = { new SqlParameter("@Id", 1) };
var obj = animal.ExeReader(sql, paras).ToList< PersonEntity>();
}
using (IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
var sql = "select Name from Person where Id=@Id";
SqlParameter[] paras = { new SqlParameter("@Id", 1) };
var obj = animal.ExeScalar(sql, paras);
}
using (IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer))
{
var sql = "select * from Person where Id=@Id";
SqlParameter[] paras = { new SqlParameter("@Id", 1) };
var dataAdapter = animal.ExeAdapter(sql, paras);
DataSet ds=new DataSet();
dataAdapter.Fill(ds);
}
【6.日志(TortoiseLog)】
using Animal.ORM.Model;
var constr = "Data Source=localhost;Initial Catalog=reportserver;User Id=sa; Password=*******";
TortoiseLog log = new TortoiseLog();
using (IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer, log))
{
var person = new PersonEntity() { Id = 32, Age = 26, Name = "Jim", Sex = 2, Birthday = new DateTime(1000, 1, 1) };
animal.Add(person);
Console.WriteLine(log.ErrorSql);
Console.WriteLine(log.ErrorMsg);
Console.WriteLine(log.Success);
//view the sql statement of each step (V1.0.8)
List <string> sqlRecords=log.SqlRecords;
}
Console.Read();
【7.事务(Transaction)】
using Animal.ORM.Model;
var constr = "Data Source=localhost;Initial Catalog=reportserver;User Id=sa; Password=*******";
{
animal.OpenTrans();
try
{
var batch = new BatchEntity()
{
BatchID = Guid.NewGuid().ToString(),
AddedOn = DateTime.Now,
Action = "BTest"
};
animal.Add(batch);
{
EventID = Guid.NewGuid().ToString(),
EventType = "Test",
TimeEntered=DateTime.Parse("2008-09-09"),
BatchID=Guid.NewGuid().ToString()
};
animal.Add(eve);
//view the sql statement of each step (V1.1.4)
List <string> sqlRecords=animal.GetAllSqlRecords();
}
catch (Exception ex)
{
Console.Write(ex.Message);
animal.RollbackTrans();
}
【8.单表分页(Single table Pagination)】
using Animal.ORM.Model;
var constr = "Data Source=localhost;Initial Catalog=reportserver;User Id=sa; Password=*******";
using (IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer,log))
{
//Init Page
Pandas page = new Pandas()
{
PIndex = 1,
PSize = 10,
POrderby = "RoleName ASC,RoleFlags DESC"
};
List<RolesEntity> listResult = animal.FlyPigs<RolesEntity>(page, x => x.RoleFlags == "0");
//Total query records
var totalRecords = page.PRecords;
【9.多表分页(Muti table pagination)】
using Animal.ORM.Model;
var constr = "Data Source=localhost;Initial Catalog=reportserver;User Id=sa; Password=*******";
TortoiseLog log=new TortoiseLog ();
using (IAnimalDbConnection animal = new AnimalDbConnection(constr, AnimalDbProvider.SqlServer,log))
{
//Init Page
Pandas page = new Pandas()
{
PIndex = 1,
PSize = 10,
POrderby = "RoleID DESC" // SqlServer 客户端 POrderby 必须赋值
};
string sql=@"SELECT R.[RoleID]
,R.[RoleName]
,R.[Description]
,R.[TaskMask]
,R.[RoleFlags]
FROM [Roles] R
Join [User] U on U.RoleID=R.RoleID
where U.UserID>10";
// Return DataTable
var dtResult = animal.FlyPigs(page, sql);
if (dtResult.HasRows())
{
}
var totalRecords = page.PRecords;