.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注释的强大功能,我们就可以相对轻松地构建复杂的数据库系统并利用生产力.关系数据 ...
随机推荐
- Base64编码及其作用
Base64编码的作用:由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法.它使用下面表中所使用的字符与编码. 而且base64特别适合在 ...
- docker 私有镜像管理工具harbor 安装
因为各种原因,官方的离线安装包下载比较费事,经常不成功,所以通过分部安装解决问题 1. docker yum install libdevmapper* -y -H tcp://0.0.0.0:237 ...
- 配置点云库PCL时遇到的问题
配置PCL基本参照PCL中国官网教程 http://www.pclcn.org/study/shownews.php?lang=cn&id=34 配置点云库时遇到的问题(基于win8 64位, ...
- 怎么查看bios版本
怎么查看bios版本呢?无需去注册表查看,无需去BIOS中查看,只需要一条简单的命令即可,下面就来一起看一看怎么查看bios版本: Win键+R打开“运行”,然后再“运行”中输入cmd进而打开“cmd ...
- powerdesigner导出word
1.网上下载word模板,或者是自制模板 2.报告->导出,选择刚才下载的模板,导出即可
- nodejs概要
1.什么是Node Node.js 可能类似jquery.js?当不是. 首先Js包含(ECMAScript 即JS- ES BOM DOM三类),浏览器三种都可以运行,node中只能运行EC ...
- OAF_开发系列20_实现OAF打印功能
ddddd 添加一个页面级的button区域:pagebuttonBar,在之下添加button item ,这里主要设置的参数有:采用默认的oaf的打印按钮的id名称: IcxPrintablePa ...
- 51nod 1643 小Q的家庭作业
题意: f(n) = sigma(gcd(i,n)) 1 <= i <= n g(n) = sigma(f(d)) d | n n = x1 * x2 * ... * xm 其中 ...
- 解决 connect to host github.com port 22 operation timed out
本来好好地.不知道为什么不能push了.估计是被墙,于是搜搜解决办法.改换端口 参考 https://mozillazg.com/2015/08/use-443-port-fix-github-con ...
- 恢复CRM plugin
1 使用工具 XrmToolbox http://xrmtoolbox.codeplex.com/releases/view/611881 2 连接:可以使用网络连接,也可以使用本地连接 3 使用 A ...