Skip to content

可从Nuget下载,所使用的数据库驱动

PetaPoco支持的数据库有

数据库驱动类名称支持的数据库驱动Other
SqlServerDatabaseProviderSqlServer, System.Data.SqlClientIs the default
MySqlDatabaseProviderMySql,MySql.Data.MySqlClient
MariaDbDatabaseProviderMariaDbMay use MySql provider
PostgreSQLDatabaseProviderNpgsql, pgsql
SQLiteDatabaseProviderSQLite, System.Data.SQLite
SqlServerCEDatabaseProvidersSqlServerCe, SqlCeConnection, System.Data.SqlServerCe.4.0
OracleDatabaseProviderOracle, Oracle.ManagedDataAccess.Client
MsAccessDbDatabaseProviderOLEDBConnection string must have either Microsoft.ACE.OLEDB.12.0 or Microsoft.Jet.OLEDB.4.0
FirebirdDbDatabaseProviderFirebird, FbConnectionbeta

用到哪个就去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 类模型的定义

csharp
    public class RoleInfo
    {      
        public int Id{ get; set; }     
        public string RoleName { get; set; }      
        public string Remark { get; set; } = "";
    }

默认类名就是表名,默认主键是Id ,默认自增长

如果更换了默认值,要用ableName PrimaryKey声明

csharp
    [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中自动选择。

查询多个结果

csharp
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 会更快