跳至内容

客户端 API 参考

Prisma Client 是一个自动生成的数据库 CRUD 入口,是您与数据库交互的主要方式。

默认构造函数(工厂)

默认构造函数的代码类型如下所示

dart
class PrismaClient {
    factory PrismaClient({
        String? datasourceUrl,
        Map<String, String>? datasources
    }) {
        ...
    }
}

属性

属性类型描述
datasourceUrlString?数据源 URL
datasourcesMap<String, String>?数据源

数据源

在 Prisma 模式中,datasource <name> 用于命名数据源。

prisma
datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

上面 db 是数据源的名称,它将用于生成 Prisma Client 的构造函数。

dart
final client = PrismaClient(datasources: {
  'db': 'sqlite://path/to/database.db',
});

提示

通常,您不需要指定它,它会在 **生成** 时自动从 schema.prisma 中读取它。在您正式编译后,实际连接的数据库并非 datasource 中指定的数据库地址,那么您在初始化 Prisma Client 时,需要覆盖 URL。

数据源 URL

以编程方式覆盖 schema.prisma 中的 datasource 块。

属性

选项示例描述
数据库连接字符串sqlite://path/to/database.db数据库连接 URL

示例

dart
final client = PrismaClient(
    datasourceUrl: 'sqlite://path/to/database.db'
);

PrismaClient.datamodel

Prisma Client 会在编译时生成 datamodel,它是一个静态属性,包含 Prisma 模式中的所有模型。

dart
print(PrismaClient.datamodel);

$connect()

$connect 用于显式连接到数据库。

提示

通常您不需要手动调用它,Prisma Client 会在您第一次调用它时自动调用它。当然手动调用它会加快数据库的第一次查询。

$disconnect()

$disconnect 用于断开与数据库的连接。

警告

这是在您的应用程序中必须预先调用的方法,以终止 Prisma Engine 进程以关闭数据库连接。如果您不调用它,即使您的应用程序已种植,Prisma Engine 进程也将继续运行。

$raw

$raw 用于执行原始 SQL 语句。

dart
final result = await client.$raw.query('SELECT * FROM User');

$raw.query()

$raw.query 用于执行 SQL 查询语句。有关用法,请参阅 查询 → 原始数据库访问 → $raw.query

$raw.execute()

$raw.execute 用于执行 SQL 执行语句。有关用法,请参阅 查询 → 原始数据库访问 → $raw.execute

$transaction

$transaction 用于执行事务。

dart
client.$transaction((client) async {
  await client.user.create(...);
  await client.post.create(...);
});

有关事务的更多信息,请参阅 查询 → 事务

$metrics

Prisma 指标让您深入了解 Prisma 客户端如何与您的数据库交互。您可以使用此洞察力来帮助诊断应用程序的性能问题。

$metrics.json()

以 JSON 格式检索指标。

dart
final metrics = await client.$metrics.json();

有关更多信息,请参阅 Prisma 官方文档 → 指标 → JSON

$metrics.prometheus()

以 Prometheus 格式检索指标。

dart
final metrics = await client.$metrics.prometheus();

有关更多信息,请参阅 Prisma 官方文档 → 指标 → Prometheus

<model> 属性

Prisma Client 拥有使用 schema.prisma 中的 model/view 块定义的所有模型和视图,并为它们生成 <Model>Delegate 代理。

dart
final users = await client.user.findMany();

有关模型委托的参考,请参阅 参考 → 模型委托

在 BSD-3-Clause 许可证下发布