客户端 API 参考
Prisma Client 是一个自动生成的数据库 CRUD 入口,是您与数据库交互的主要方式。
默认构造函数(工厂)
默认构造函数的代码类型如下所示
class PrismaClient {
factory PrismaClient({
String? datasourceUrl,
Map<String, String>? datasources
}) {
...
}
}
属性
属性 | 类型 | 描述 |
---|---|---|
datasourceUrl | String? | 数据源 URL |
datasources | Map<String, String>? | 数据源 |
数据源
在 Prisma 模式中,datasource <name>
用于命名数据源。
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
上面 db
是数据源的名称,它将用于生成 Prisma Client 的构造函数。
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 |
示例
final client = PrismaClient(
datasourceUrl: 'sqlite://path/to/database.db'
);
PrismaClient.datamodel
Prisma Client 会在编译时生成 datamodel
,它是一个静态属性,包含 Prisma 模式中的所有模型。
print(PrismaClient.datamodel);
$connect()
此 $connect
用于显式连接到数据库。
提示
通常您不需要手动调用它,Prisma Client 会在您第一次调用它时自动调用它。当然手动调用它会加快数据库的第一次查询。
$disconnect()
此 $disconnect
用于断开与数据库的连接。
警告
这是在您的应用程序中必须预先调用的方法,以终止 Prisma Engine 进程以关闭数据库连接。如果您不调用它,即使您的应用程序已种植,Prisma Engine 进程也将继续运行。
$raw
$raw
用于执行原始 SQL 语句。
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
用于执行事务。
client.$transaction((client) async {
await client.user.create(...);
await client.post.create(...);
});
有关事务的更多信息,请参阅 查询 → 事务
$metrics
Prisma 指标让您深入了解 Prisma 客户端如何与您的数据库交互。您可以使用此洞察力来帮助诊断应用程序的性能问题。
$metrics.json()
以 JSON 格式检索指标。
final metrics = await client.$metrics.json();
有关更多信息,请参阅 Prisma 官方文档 → 指标 → JSON
$metrics.prometheus()
以 Prometheus 格式检索指标。
final metrics = await client.$metrics.prometheus();
有关更多信息,请参阅 Prisma 官方文档 → 指标 → Prometheus
<model>
属性
Prisma Client 拥有使用 schema.prisma
中的 model
/view
块定义的所有模型和视图,并为它们生成 <Model>Delegate
代理。
final users = await client.user.findMany();
有关模型委托的参考,请参阅 参考 → 模型委托