我正在尝试使用 Debezium 将上游数据库中的表同步到下游数据库,遵循 Debezium 博客中描述的方法。
在下游表中,我只需要上游表中的某些列。我还希望更改一些列名(包括主键的名称)。如果我不尝试重命名主键,同步将不会出现任何问题。
我在用:
我在下面列出了我的数据库和连接器设置的完整详细信息。
(1)数据库表定义:
上游表的 DDL 为:
CREATE TABLE [kafkatest.service1].dbo.Users (
Id int IDENTITY(1,1) NOT NULL,
Name nvarchar COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT PK_Users PRIMARY KEY (Id)
) GO
Run Code Online (Sandbox Code Playgroud)
下游表的DDL为:
CREATE TABLE [kafkatest.service2].dbo.Users (
LocalId int IDENTITY(1,1) NOT NULL, // added to avoid IDENTITY_INSERT issue with SQL Server
ExternalId int NOT NULL,
ExternalName nvarchar COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT PK_Users PRIMARY KEY (LocalId)
) GO
Run Code Online (Sandbox Code Playgroud)
特别要注意的是, …
采用以下 Entity Framework Core 实体类:
public interface IEntity
{
public Ulid Id { get; set; }
}
public class User : IEntity
{
[Key]
public Ulid Id { get; set; }
public string Email { get; set; } = default!;
public string FirstName { get; set; } = default!;
public string LastName { get; set; } = default!;
public Ulid? CompanyId { get; set; }
// Navigation properties
public Company? Company { get; set; } = default!;
}
Run Code Online (Sandbox Code Playgroud)
请注意,主键是一个不可为 null …
我正在使用 SvelteKit,出于 SEO 的原因,我想使用完整的 SSR 并确保所有数据在传递到浏览器之前都在服务器端获取和渲染。换句话说,对后端 API 的所有调用都应该在传递初始页面响应之前完成。
但是,从文档中我不清楚如何实现这一点。(我可能错过了一些东西。)
我已经尝试过以下操作,但这只会提供一个完全空的主体:
<script>
let promise = fetch('https://swapi.dev/api/people/1/')
.then((response) => response.json());
</script>
{#await promise then character}
<main>
<h1>Your character</h1>
Name is {character.name}
</main>
{/await}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何使用 SvelteKit 阻止服务器端渲染,直到获取数据为止?