.NET ORM工具Pax实战
Pax是微软的一个ORM读写工具,比NHibernate更好用。可以在项目中用Nuget下载并安装。

可以看到引用中多了
在App.config里设置配置文件如下
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<clear/>
<add name="Couriers" connectionString="Server=.;User id=sa;password=3179412;Initial Catalog=Couriers;MultipleActiveResultSets=true;Type System Version=SQL Server 2012;" />
</connectionStrings>
</configuration>
写一个建立与sqlserver2012连接的工具类
public class BaseDb
{
public IDbConnection GetDb( IOrmLiteDialectProvider provider = null)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString(ConnectionStr);
//??主要作用是如果 ?? 运算符的左操作数非空,该运算符将返回左操作数,否则返回右操作数。
var factory = new OrmLiteConnectionFactory(connections, provider??SqlServerDialect.Provider);
return factory.Open();
}
public BaseDb(string connectionStr)
{
ConnectionStr = connectionStr;
}
private string ConnectionStr;
public IDbConnection Db => GetDb();
~BaseDb()//析构函数
{
if (Db.State == ConnectionState.Open)
{
Db.Close();
Db.Dispose();
}
}
}
连接前Couriers数据库里什么也没有。

建立一个类,类的字段要对应数据库的字段。
public class ModelWithIdOnly:
{
public ModelWithIdOnly()
{
}
public ModelWithIdOnly(long id)
{
Id = id;
}
// must be long as you cannot have a table with only an autoincrement field
public long Id { get; set; }
}
在入口处写程序如下:
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.Db;
Db.DropAndCreateTable(typeof(ModelWithIdOnly));
var success = Db.TableExists(typeof (ModelWithIdOnly).Name.SqlTableRaw());
if (success)
{
Console.WriteLine("ModelWithIdOnly表插入到了数据库");
Console.ReadKey();
}
}
}
运行可以看到

表的删除
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.Db;
Db.DropTable<ModelWithIdOnly>();
var success = Db.TableExists(typeof(ModelWithIdOnly).Name.SqlTableRaw());//检查新表是否存在
if (!success)
{
Console.WriteLine("ModelWithIdOnly表在数据库中删除");
Console.ReadKey();
}
}
表的新增
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.Db;
Db.CreateTable<ModelWithIdOnly>();
var success = Db.TableExists(typeof(ModelWithIdOnly).Name.SqlTableRaw());//检查新表是否存在
if (success)
{
Console.WriteLine("ModelWithIdOnly表在数据库中新增");
Console.ReadKey();
}
}
}
插入一列
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.Db;
));
)
{
Console.WriteLine("成功插入了{0}列",success);
Console.ReadKey();
}
}
}
返回表中所有数据
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.Db;
var rows = Db.Select<ModelWithIdOnly>();
)
{
Console.WriteLine(rows);
Console.ReadKey();
}
}
}
输出sql语句
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.Db;
var rows = Db.Select<ModelWithIdOnly>();
var strSQL = Db.GetLastSql();
)
{
Console.WriteLine(strSQL);
Console.ReadKey();
}
}
}
创建新类
public class ModelWithGuid
{
public long Id { get; set; }
public Guid Guid { get; set; }
}
简单的插入与查找
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.Db;
Db.DropAndCreateTable<ModelWithGuid>();
var models = new[] {
, Guid = Guid.NewGuid() },
, Guid = Guid.NewGuid() }
};
var successNum= Db.SaveAll(models);
string strSql1 = Db.GetLastSql();//获得sql语句
].Id);//取出某列 var newModel2 = Db.Single<ModelWithGuid>(q => q.Guid == models[0].Guid);//取出某列 Db.Update(new ModelWithGuid { Id = models[0].Id, Guid = newGuid });//更新某列 bool has = Db.TableExists(typeof (ModelWithIdOnly).Name.SqlTableRaw());//某表是否存在
var model = new[] {
new ModelWithGuid { Id = 3, Guid = Guid.NewGuid() }
};
long num= Db.Insert(model);//插入某列,返回插入列数
}
}
执行sql语句插class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.GetDb();
var models = new[] {
, Guid = Guid.NewGuid() },
, Guid = Guid.NewGuid() }
};
Db.ExecuteSql("INSERT INTO {0} ({1},{2}) VALUES (4,{3})"
.Fmt("ModelWithGuid".SqlTable(),
"Id".SqlColumn(),
"Guid".SqlColumn(),
models[].Guid.SqlValue()));
var normalLastInsertedId = Db.LastInsertId(); var rows = Db.Select<ModelWithGuid>(); var row2 = rows.First(x => x.Id == 4);
var rowIds = new List<int>(new[] { 1, 2, 3 });
rows = Db.SelectByIds<ModelWithGuid>(rowIds);
var dbRowIds = rows.ConvertAll(x => x.Id);
Console.WriteLine(normalLastInsertedId.ToString());
Console.ReadKey();
}
}
批量删除
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.GetDb();
, });
], rowIds[] });
Console.WriteLine(success);
Console.ReadKey();
}
}
选择性删除
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.GetDb();
, });
], rowIds[] });
Db.Delete<ModelWithGuid>(x => x.Id <= );
);
Console.WriteLine(dbRow==null?"没有":dbRow.Guid.ToString());
Console.ReadKey();
}
}
条件删除
class Program
{
static void Main(string[] args)
{
BaseDb baseDb = new BaseDb("Couriers");
var Db = baseDb.GetDb();
Db.DeleteFmt<ModelWithIdOnly>());
);
Console.WriteLine(dbRow==null?"没有":dbRow.Id.ToString());
Console.ReadKey();
}
}
插入与删除
class Program
{
static void Main(string[] args)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString("Couriers");
var factory = new OrmLiteConnectionFactory(connections, SqlServerDialect.Provider);
IDbConnection Db = factory.Open();
using (Db)
{
ModelWithIdOnly one = };
Db.Save(one);
var rowsAffected = Db.Delete(one);
Console.WriteLine(rowsAffected.ToString());
Console.ReadKey();
}
}
}
批量增删
class Program
{
static void Main(string[] args)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString("Couriers");
var factory = new OrmLiteConnectionFactory(connections, SqlServerDialect.Provider);
IDbConnection Db = factory.Open();
using (Db)
{
List <ModelWithIdOnly> ones = },} };
Db.SaveAll(ones);
var rowsAffected = Db.Delete(ones.ToArray());
Console.WriteLine(rowsAffected.ToString());
Console.ReadKey();
}
}
}
按条件更新
class Program
{
static void Main(string[] args)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString("Couriers");
var factory = new OrmLiteConnectionFactory(connections, SqlServerDialect.Provider);
IDbConnection Db = factory.Open();
using (Db)
{
Db.DropAndCreateTable<ModelWithName>();
List <ModelWithName> ones = ,Name=,Name= ,Name="zhuhou"} };
Db.SaveAll(ones);
ModelWithName one = , Name = "dog"};
var num = Db.Update<ModelWithName>(new {one.Name},
x => x.Id==); Db.UpdateFmt<ModelWithName>(set: "NAME = {0}".SqlFmt("change"), where: "Id".SqlColumn() + " = {0}".SqlFmt(8)); Db.UpdateFmt(table: "ModelWithName".SqlTableRaw(),set: "NAME = {0}".SqlFmt("cat"), where: "Id".SqlColumn() + " = {0}".SqlFmt(13));
Console.WriteLine(num.ToString());
Console.ReadKey();
}
}
}
同时插入多行
class Program
{
static void Main(string[] args)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString("Couriers");
var factory = new OrmLiteConnectionFactory(connections, SqlServerDialect.Provider);
IDbConnection Db = factory.Open();
using (Db)
{
Db.CreateTable<ModelWithIdOnly>(true);
);
);
Db.Insert(row1, row2);
Db.Update(row1, row2);
var list = new List<ModelWithIdOnly> { row1, row2 };
Db.UpdateAll(list);
}
}
}
更新所有列
class Program
{
static void Main(string[] args)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString("Couriers");
var factory = new OrmLiteConnectionFactory(connections, SqlServerDialect.Provider);
IDbConnection Db = factory.Open();
using (Db)
{
Db.Insert(, Name = "Car"});
var existingPerson = Db.Select<ModelWithName>().First();
existingPerson.Name = "Love";
//把所有的Name列更新成love
Db.UpdateOnly(existingPerson,
onlyFields: p => new { p.Name});
var person = Db.Select<ModelWithName>().First();
Console.WriteLine(person.Name);
}
}
}
更新指定列class Program
{
static void Main(string[] args)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString("Couriers");
var factory = new OrmLiteConnectionFactory(connections, SqlServerDialect.Provider);
IDbConnection Db = factory.Open();
using (Db)
{
);
Console.WriteLine(Num);
Db.UpdateOnly(); Db.UpdateOnly(new ModelWithName { Name = "Java" }, q => q.Update(p => p.Name).Where(x => x.Name == "Love")); //只更新Name == "Love"的列
} } }
select操作
class Program
{
static void Main(string[] args)
{
var connections = Pax.Lib.Configuration.ConfigUtils.GetConnectionString("Couriers");
var factory = new OrmLiteConnectionFactory(connections, SqlServerDialect.Provider);
IDbConnection Db = factory.Open();
using (Db)
{
var temp= Db.Select<ModelWithName>(x => x.Name == "js");//返回list
var temp1= Db.Select<ModelWithName>(q => q.Where(x => x.Name == "Java").OrderBy(x => x.Id));//返回list
));//返回list
var temp4 = Db.Single<ModelWithName>(x=>x.Name=="java");//只返回第一个符合的元素对象
));//只返回第一个符合的元素对象
));//只返回第一个符合的元素对象
//var Num1= Db.Scalar<ModelWithName, int>(x => Sql.Max(Convert.ToInt32(x.Id)));//返回单个计算数据
//var Num2= Db.Scalar<ModelWithName, int>(x => Sql.Max(Convert.ToInt32(x.Id)), x => x.Id < 100);//带条件返回单个计算数据
var temp7 =Db.Select<ModelWithName>("Id > 40");
var temp8 = Db.Select<ModelWithName>("SELECT * FROM ModelWithName WHERE Id > 40");
) });
});
);
);//相当于select Id from ModelWithName where Id>90
);
);//返回list
});
, , });//相当于select * from ModelWithIdOnly where id in (1,2,3) var temp1= Db.SelectNonDefaults(new ModelWithName { Id = 1 });//select * from ModelWithName where id=1 返回list var temp2= Db.SelectNonDefaults("Name = @Name", new ModelWithName { Name = "Java" });//select * from ModelWithName where Name='Java' 返回list }
}
}
其他select操作
db.SelectLazy<Person>().ToList();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\""));
db.SelectLazy<Person>( }).ToList();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age > @age"));
db.SelectLazyFmt<Person>().ToList();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age > 40"));
db.WhereLazy<Person>( }).ToList();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE \"Age\" = @Age"));
db.SingleById<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE \"Id\" = @Id"));
db.Single<Person>( });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE \"Age\" = @Age"));
db.Single<Person>( });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age = @age"));
db.Single<Person>() });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age = @age"));
db.SingleFmt<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age = 42"));
db.SingleById<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE \"Id\" = @Id"));
db.SingleWhere<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE \"Age\" = @Age"));
db.Scalar<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) \nFROM \"Person\"\nWHERE (\"Age\" > @0)"));
db.Scalar<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Count(*) \nFROM \"Person\"\nWHERE (\"Age\" > @0)"));
db.Scalar< });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) FROM Person WHERE Age > @age"));
db.Scalar<) });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) FROM Person WHERE Age > @age"));
db.ScalarFmt<);
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) FROM Person WHERE Age > 40"));
db.Column<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"LastName\" \nFROM \"Person\"\nWHERE (\"Age\" = @0)"));
db.Column< });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT LastName FROM Person WHERE Age = @age"));
db.Column<) });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT LastName FROM Person WHERE Age = @age"));
db.ColumnFmt<);
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT LastName FROM Person WHERE Age = 27"));
db.ColumnDistinct<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Age\" \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.ColumnDistinct< });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Age FROM Person WHERE Age < @age"));
db.ColumnDistinct<) });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Age FROM Person WHERE Age < @age"));
db.ColumnDistinctFmt<);
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Age FROM Person WHERE Age < 50"));
db.Lookup<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Age\",\"LastName\" \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.Lookup< });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Age, LastName FROM Person WHERE Age < @age"));
db.LookupFmt<);
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Age, LastName FROM Person WHERE Age < 50"));
db.Dictionary<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\",\"LastName\" \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.Dictionary< });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Id, LastName FROM Person WHERE Age < @age"));
db.DictionaryFmt<);
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT Id, LastName FROM Person WHERE Age < 50"));
db.Exists<Person>(x => x.Age < );
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.Exists(db.From<Person>().Where(x => x.Age < ));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.Exists<Person>( });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE \"Age\" = @Age"));
db.Exists<Person>( });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age = @age"));
db.Exists<Person>( });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT * FROM Person WHERE Age = @age"));
db.ExistsFmt<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"Id\", \"FirstName\", \"LastName\", \"Age\" FROM \"Person\" WHERE Age = 42"));
db.ExistsFmt<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT * FROM Person WHERE Age = 42"));
db.SqlList<Person>(db.From<Person>().Select());
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT * \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.SqlList<Person>( });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT * FROM Person WHERE Age < @age"));
db.SqlList<Person>() });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT * FROM Person WHERE Age < @age"));
db.SqlList<Person>( } });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT * FROM Person WHERE Age < @age"));
db.SqlColumn<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT \"LastName\" \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.SqlColumn< });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT LastName FROM Person WHERE Age < @age"));
db.SqlColumn<) });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT LastName FROM Person WHERE Age < @age"));
db.SqlColumn< } });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT LastName FROM Person WHERE Age < @age"));
db.SqlScalar<));
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) \nFROM \"Person\"\nWHERE (\"Age\" < @0)"));
db.SqlScalar< });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) FROM Person WHERE Age < @age"));
db.SqlScalar<) });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) FROM Person WHERE Age < @age"));
db.SqlScalar< } });
Assert.That(db.GetLastSql(), Is.EqualTo("SELECT COUNT(*) FROM Person WHERE Age < @age"));
));
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE Person SET LastName='WaterHouse' WHERE Id=7"));
rowsAffected = db.ExecuteNonQuery( });
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE Person SET LastName=@name WHERE Id=@id"));
db.Insert(, FirstName = });
Assert.That(db.GetLastSql(), Is.EqualTo("INSERT INTO \"Person\" (\"Id\",\"FirstName\",\"LastName\",\"Age\") VALUES (@Id,@FirstName,@LastName,@Age)"));
db.Insert(, FirstName = },
, FirstName = });
Assert.That(db.GetLastSql(), Is.EqualTo("INSERT INTO \"Person\" (\"Id\",\"FirstName\",\"LastName\",\"Age\") VALUES (@Id,@FirstName,@LastName,@Age)"));
db.InsertAll(, FirstName = } });
Assert.That(db.GetLastSql(), Is.EqualTo("INSERT INTO \"Person\" (\"Id\",\"FirstName\",\"LastName\",\"Age\") VALUES (@Id,@FirstName,@LastName,@Age)"));
db.InsertOnly( }, q => q.Insert(x => new { x.FirstName, x.Age }));
Assert.That(db.GetLastSql(), Is.EqualTo("INSERT INTO \"PersonWithAutoId\" (\"FirstName\",\"Age\") VALUES ('Amy',27)"));
db.InsertOnly( }, q => db.From<PersonWithAutoId>().Insert(x => new { x.FirstName, x.Age }));
Assert.That(db.GetLastSql(), Is.EqualTo("INSERT INTO \"PersonWithAutoId\" (\"FirstName\",\"Age\") VALUES ('Amy',27)"));
db.Update(, FirstName = });
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
db.Update(, FirstName = },
, FirstName = });
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
db.Update(, FirstName = } });
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
db.UpdateAll(, FirstName = } });
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
db.Update(, FirstName = }, x => x.LastName == "Hendrix");
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"Id\"=@1, \"FirstName\"=@2, \"LastName\"=@3, \"Age\"=@4 WHERE (\"LastName\" = @0)"));
db.Update<Person>(new { FirstName = "JJ" }, x => x.LastName == "Hendrix");
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
db.UpdateNonDefaults(new Person { FirstName = "JJ" }, x => x.LastName == "Hendrix");
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
db.UpdateOnly(new Person { FirstName = "JJ" }, x => x.FirstName);
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
db.UpdateOnly(new Person { FirstName = "JJ" }, x => x.FirstName, x => x.LastName == "Hendrix");
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"LastName\" = @0)"));
db.UpdateOnly(new Person { FirstName = "JJ", LastName = "Hendo" }, q => q.Update(x => x.FirstName));
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@0"));
db.UpdateOnly(new Person { FirstName = "JJ" }, q => q.Update(x => x.FirstName).Where(x => x.FirstName == "Jimi"));
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@1 WHERE (\"FirstName\" = @0)"));
db.UpdateFmt<Person>(set: "FirstName = {0}".SqlFmt("JJ"), where: "LastName = {0}".SqlFmt("Hendrix"));
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET FirstName = 'JJ' WHERE LastName = 'Hendrix'"));
db.UpdateFmt(table: "Person", set: "FirstName = {0}".SqlFmt("JJ"), where: "LastName = {0}".SqlFmt("Hendrix"));
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET FirstName = 'JJ' WHERE LastName = 'Hendrix'"));
db.Delete<Person>( });
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE \"FirstName\"=@FirstName AND \"Age\"=@Age"));
db.Delete(, FirstName = });
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE \"Id\"=@Id AND \"FirstName\"=@FirstName AND \"LastName\"=@LastName AND \"Age\"=@Age"));
db.DeleteNonDefaults( });
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE \"FirstName\"=@FirstName AND \"Age\"=@Age"));
db.DeleteNonDefaults( },
});
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE \"FirstName\"=@FirstName AND \"Age\"=@Age"));
db.DeleteById<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE \"Id\" = @0"));
db.DeleteByIds<Person>(, , });
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE \"Id\" IN (1,2,3)"));
db.DeleteFmt<Person>();
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE Age = 27"));
db.DeleteFmt();
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE Age = 27"));
db.Delete<Person>(x => x.Age == );
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE (\"Age\" = @0)"));
db.Delete<Person>(q => q.Where(x => x.Age == ));
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE (\"Age\" = @0)"));
db.Delete(db.From<Person>().Where(x => x.Age == ));
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE (\"Age\" = @0)"));
db.DeleteFmt<Person>());
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE Age = 27"));
db.DeleteFmt(table: ));
Assert.That(db.GetLastSql(), Is.EqualTo("DELETE FROM \"Person\" WHERE Age = 27"));
db.Save(, FirstName = });
Assert.That(db.GetLastSql(), Is.EqualTo("INSERT INTO \"Person\" (\"Id\",\"FirstName\",\"LastName\",\"Age\") VALUES (@Id,@FirstName,@LastName,@Age)"));
db.Save(, FirstName = });
Assert.That(db.GetLastSql(), Is.EqualTo("UPDATE \"Person\" SET \"FirstName\"=@FirstName, \"LastName\"=@LastName, \"Age\"=@Age WHERE \"Id\"=@Id"));
db.Save(, FirstName = },
, FirstName = });
db.SaveAll(, FirstName = },
, FirstName = } });
.NET ORM工具Pax实战的更多相关文章
- 基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil
基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,把日常能用到的各种CRUD都进行了简化封装,让普通程序员只需关注业务即可,因为非常简单,故直接贴源代码,大家若需使用可以直 ...
- 对.net orm工具Dapper在多数据库方面的优化
Dapper是近2年异军突起的新ORM工具,它有ado.net般的高性能又有反射映射实体的灵活性,非常适合喜欢原生sql的程序员使用,而且它源码很小,十分轻便.我写本博客的目的不是为了介绍Dapper ...
- python操作三大主流数据库(3)python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用
python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用 手册地址: http://docs.sqlalchemy.org/en/rel_1_1/orm/i ...
- 单元测试系列之二:Mock工具Jmockit实战
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...
- 轻量级ORM工具Simple.Data
今天推举的这篇文章,本意不是要推举文章的内容,而是据此介绍一下Simple.Data这个很有意思的类ORM工具. 现在大家在.NET开发中如果需要进行数据访问,那么基本都会使用一些ORM工具,比如微软 ...
- 几种常见的JavaScript混淆和反混淆工具分析实战
几种常见的JavaScript混淆和反混淆工具分析实战 xiaix2016-03-05+8共1195751人围观 ,发现 5 个不明物体WEB安全 信息安全常被描述成一场军备竞赛,白帽与黑帽,渗透测试 ...
- orm工具的基本思想
orm工具的基本思想无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.2. 由sessionf ...
- shell编程系列26--大型脚本工具开发实战
shell编程系列26--大型脚本工具开发实战 大型脚本工具开发实战 拆分脚本功能,抽象函数 .function get_all_group 返回进程组列表字符串 .function get_all_ ...
- 在简单的JDBC程序中使用ORM工具
本文来自[优锐课]——抽丝剥茧,细说架构那些事. ORM(对象关系映射)是用于数据库编程的出色工具.只需一点经验和Java注释的强大功能,我们就可以相对轻松地构建复杂的数据库系统并利用生产力.关系数据 ...
随机推荐
- redis 3.2.6 on ubuntu 14.04
1. official site: https://github.com/antirez/redis/releases 2. compile and setup tar zxf redis-3.2.6 ...
- C语言实现简单php自定义扩展
1.下载php源码 下载地址:http://cn2.php.net/get/php-5.6.29.tar.gz/from/this/mirror 传到/usr/local/src/下 上传命令:rz ...
- VS2013 统计代码量(使用正则表达式)
年尾了,需要统计一下今年各个项目的工作量,统计一下各个项目的代码行数: 具体操作步骤如下: 1.选中解决方案,快捷键:Ctrl+Shift+F,打开搜索框,在查找内容中输入正则表达式:"b* ...
- Redis -- 03 持久化
Redis提供了两种不同的方法来将数据存储到硬盘里面,一种叫内存快照,另一种叫只追加文件(AOF),这两种方法既可以同时使用课可以单独使用,也可以都不使用,取决于场景. 快照 快照是将某一时刻的所有数 ...
- tengine+tomcat配置
# 根据你服务器的cpu核数来确定此值 worker_processes 4; error_log logs/error.log crit; #error_log logs/error.log not ...
- Linux LVM硬盘管理之二:创建逻辑卷步骤
创建逻辑卷(LV)的顺序:Linux分区---物理卷(PV)---卷组(VG)---逻辑卷(LV)---挂载到文件系统 删除逻辑卷(LV)的顺序:卸载文件系统----逻辑卷(LV)---卷组(VG)- ...
- IOS开发-图片上传
目前IOS端开发,图片上传到服务器分为两种,一种是直接上到服务器,一种是借助第三方储存(减少服务器压力). 一.直接上传到服务器 /** * 代码演示 */ //*******UIImagePNGRe ...
- [系统集成] 部署 mesos-exporter 和 prometheus 监控 mesos task
前几天我在mesos平台上基于 cadvisor部署了 influxdb 和 grafana,用于监控 mesos 以及 docker app 运行信息,发现这套监控系统不太适合 mesos + do ...
- ios打包出来为pkg的处理方法
Add LSRequiresIPhoneOS YES to your Info.plist The key can be found as Application requires iPhone en ...
- Eclipse FreeMarker 插件安装
方法一:手动安装 手动安装没有成功 步骤: 1. 下载freemarker-ide : http://sourceforge.net/projects/freemarker-ide/files/ 2. ...