如何使用 Petapoco 将自动增量 ID 设置为另一列

How to set auto incremented id to another column with using Peta Poco

我使用 C#、SQL 服务器和默认自动递增 ID 的 PetaPoco。我只想知道是否可以将这个自动递增的 id 设置为另一列。

我还有 2 列需要使用 ID 的确切值进行设置。是否可以在 SQL CREATE TABLE 语句中执行此操作或在 ExecuteNonQuery 之前或之后执行一些挂钩?如果可能的话,我不想创建视图或触发器。

是的,当然 - CREATE TABLE 允许您通过添加 IDENTITY 来定义 哪个 列将成为 auto-increment 列列定义的关键字。这适用于任何 integer-based 列或 DECIMAL(p, 0) 类型的列(具有 0 比例 - 没有 after-the-dot 数字)。

例如

CREATE TABLE dbo.YourTable
(
    ID INT NOT NULL,
    SomeOtherColumn BIGINT IDENTITY(1,1) NOT NULL,
    ....
)

查看 MS docs on CREATE TABLE 了解完整的详细信息

更新: 所以你有 3 个单独的 third-party 应用程序,它们都访问这个 table,并且都希望找到特定的列 - 其中一个你可以做身份列。其他两个可能是该标识列的 计算、持久化 "copies" - 像这样:

CREATE TABLE dbo.YourTable
(
    ID INT NOT NULL,
    YourIdentityColumn BIGINT IDENTITY(1,1) NOT NULL,
    ....
    SpecialColumnForApp2 AS YourIdentityColumn PERSISTED,
    SpecialColumnForApp3 AS YourIdentityColumn PERSISTED,
    ....
)