可从Nuget下载,所使用的数据库驱动
PetaPoco支持的数据库有
数据库驱动类名称 | 支持的数据库驱动 | Other |
---|---|---|
SqlServerDatabaseProvider | SqlServer, System.Data.SqlClient | Is the default |
MySqlDatabaseProvider | MySql,MySql.Data.MySqlClient | |
MariaDbDatabaseProvider | MariaDb | May use MySql provider |
PostgreSQLDatabaseProvider | Npgsql, pgsql | |
SQLiteDatabaseProvider | SQLite, System.Data.SQLite | |
SqlServerCEDatabaseProviders | SqlServerCe, SqlCeConnection, System.Data.SqlServerCe.4.0 | |
OracleDatabaseProvider | Oracle, Oracle.ManagedDataAccess.Client | |
MsAccessDbDatabaseProvider | OLEDB | Connection string must have either Microsoft.ACE.OLEDB.12.0 or Microsoft.Jet.OLEDB.4.0 |
FirebirdDbDatabaseProvider | Firebird, FbConnection | beta |
用到哪个就去Nuget上搜
RsCode使用PetaPoco做为ORM,官方文档
Petapoco默认使用的数据库是mssql,文档
//插入操作https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Inserting
//事务操作https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Transactions
//存储过程https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Stored-procedures
//1对多,多对1 https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Multi-Poco-Queries
注意事项:
Petapoco 类模型的定义
public class RoleInfo
{
public int Id{ get; set; }
public string RoleName { get; set; }
public string Remark { get; set; } = "";
}
默认类名就是表名,默认主键是Id ,默认自增长
如果更换了默认值,要用ableName PrimaryKey声明
[TableName("rswl_role_info")]
[PrimaryKey("id")]
public class RoleInfo
{
[Column("id")]
public int RoleId { get; set; }
}
类的映射
默认情况下不需要映射。假设表名将是类名,如果未使用下面的属性指定主键,则主键为'Id'。
基本映射是通过属性完成的。最常用的是:
[TableName] 这需要一个“name”参数,它指示Poco类将被映射到的表。
[PrimaryKey] 这有一个“columnName”参数,它使用表的主键的列名称。多个主键可以通过用逗号分隔列来指定。还有一个“autoIncrement”属性,用于指示主键列是否自动增加,例如Sql Server中的标识列。默认情况下是这样。对于Oracle,还有一个“sequenceName”属性,在使用Oracle插入数据时将使用该属性。
[Column] 如果列名称与属性名称不匹配,则使用此名称。
[Ignore] 该属性将被忽略,不能映射到。
[ResultColumn] 标有结果列的属性可以映射到,但是这些属性不会包含在插入或更新中。注意:这些列需要在SQL中显式指定。它不会被包含在自动生成的SQL中。
[ComputedColumn] “ComputedColumn”列属性的属性与“ResultColumn”列属性的工作方式相同,但是它们将在SQL中自动选择。
查询多个结果
using(var result=db.QueryMultiple(sql))
{
var user=result.Read<User>();
var address=result.Read<Address>();
}
1对多查询,多对一查询 https://github.com/CollaboratingPlatypus/PetaPoco/wiki/Mapping-One-to-Many-and-Many-to-One-Relationships
分页查询 带上order by 会更快