用途:这是 SpacetimeDB 的 C# 服务端模块 SDK 参考,供在 C# 中编写表、reducer 或模块逻辑时使用。
主要能力:模块由静态 partial 类中的静态方法与 public partial struct 表组成,需 using SpacetimeDB;。表用 [SpacetimeDB.Table(...)] 标注,支持 Accessor、Public、Scheduled、ScheduledAt、Event 等选项;列支持无符号/有符号整数、U128/U256、I128/I256、浮点、bool、string、List<T>、Identity、ConnectionId、Timestamp、TimeDuration、Uuid 及可空类型。列属性包括 [PrimaryKey]、[AutoInc]、[Unique]、[SpacetimeDB.Index.BTree]、[Default(true)]。reducer 用 [SpacetimeDB.Reducer] 标注,通过 ctx.Db.{Accessor}.{Column}.{Method} 进行 Insert、Find、Filter、Iter、Count、Update、Delete。支持 Init、ClientConnected、ClientDisconnected 生命周期钩子,以及匿名/按用户视图、查询构建器视图、客户端可见性过滤器、定时表、过程与 HTTP 处理、自定义类型与标记枚举。
使用方式:通过 SpacetimeDB 属性导出方法必须为 public static;索引属性需完整限定为 [SpacetimeDB.Index.BTree];定时表与其 reducer 需在同一 Module 类中声明以便 nameof 解析;过程为不稳定 API,使用时应加 #pragma warning disable STDB_UNSTABLE。
限制:模块内不可用标准库时钟与随机数,只能通过 ReducerContext 获取发送者身份、时间与随机性;视图上下文为只读,支持 Count 与已声明索引的 Find/Filter,但不支持全表 Iter();ProcedureContext 与 HandlerContext 不直接暴露表,需经 ctx.WithTx;网络 I/O 应在开启事务前完成。其余细节以官方资料为准。