如何使用Peta Poco将自动递增的ID设置为另一列

bbc*_*iao 5 c# sql-server petapoco

我使用C#,SQL Server和PetaPoco,它们ID默认情况下会自动递增。我只想知道是否可以将此自动递增的id设置为另一列。

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

mar*_*c_s 4

是的,当然 -允许您通过将关键字添加到列定义CREATE TABLE来定义哪一列将是自动增量列。IDENTITY这适用于任何基于整数的列或类型的列DECIMAL(p, 0)(带有0刻度 - 没有点后数字)。

例如

CREATE TABLE dbo.YourTable
(
    ID INT NOT NULL,
    SomeOtherColumn BIGINT IDENTITY(1,1) NOT NULL,
    ....
)
Run Code Online (Sandbox Code Playgroud)

有关完整且完整的详细信息,请参阅MS 文档CREATE TABLE

更新:因此您有 3 个独立的第三方应用程序,它们都访问此表,并且都希望找到特定列 - 您可以将其中之一设置为标识列。另外两个可以计算,该身份列的持久“副本” - 如下所示:

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