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

时间:2019-07-19 14:55:21

标签: c# sql-server petapoco

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

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

1 个答案:

答案 0 :(得分:2)

是的,当然-通过向列定义添加CREATE TABLE关键字,IDENTITY允许您定义哪个列将是自动增量列。此方法适用于任何基于整数的列或类型为DECIMAL(p, 0)(缩放比例为0的列,无尾号)。

例如

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

有关完整的完整信息,请参见MS docs on CREATE TABLE

更新:因此,您有3个单独的第三方应用程序,都可以访问此表,并且都希望找到特定的列-您可以在其中创建一个identity列。其他两个可以是该身份列的计算后的持久化“副本”,如下所示:

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