Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ到SQL句柄自动递增主键_C#_Wpf_Windows Phone 7_Linq To Sql - Fatal编程技术网

C# LINQ到SQL句柄自动递增主键

C# LINQ到SQL句柄自动递增主键,c#,wpf,windows-phone-7,linq-to-sql,C#,Wpf,Windows Phone 7,Linq To Sql,我正在尝试将数据存储在本地数据库(SQLCE)中。我设置了RowObject的一个属性,如下所示: [Column(IsPrimaryKey=true,CanBeNull=false,IsDbGenerated=true,AutoSync=AutoSync.OnInsert,DbType="int NOT NULL IDENTITY")] public int key { get; set; } 当我插入新记录时,主键会自动递增。但是,如果我删除一个或多个记录,然后插入

我正在尝试将数据存储在本地数据库(SQLCE)中。我设置了RowObject的一个属性,如下所示:

    [Column(IsPrimaryKey=true,CanBeNull=false,IsDbGenerated=true,AutoSync=AutoSync.OnInsert,DbType="int NOT NULL IDENTITY")]
    public int key
    { get; set; }
当我插入新记录时,主键会自动递增。但是,如果我删除一个或多个记录,然后插入一个新记录,它的主键值对应于上次插入的记录的主键值加上一个,尽管该记录已被删除。 我知道不可能更新所有主键。但是,是否可以控制主键的增量?并避免主键的连续增量


好的,谢谢你的回答。我问是因为我担心PK会达到它的最大值。也许这对我的项目来说不是一个真正的问题,但我想知道如何处理它,以防它发生。如果可能的话,我如何理解和处理数据库是否已满。

这违反了自动增量

我有时会因为需要禁用列的自动增量来添加在旧位置删除的行,然后再次启用它

如果您坚持这样做,您可以在delete trigger disable列的auto increment行为中添加2个触发器,然后在insert trigger之后的另一个触发器上再次启用它。
所以在删除时禁用它,在下一次插入时使用max(ID)+1添加它,然后在插入后再次启用它

例如:

-------------人员表-----------------

ID[自动递增]----姓名----年龄
10000-------------------Jack--------21
10001-----------------肖恩----19
10002------------------阿尔伯特------33

现在下一个ID将是10003,但您需要10002

DECLARE @ID int;  

select @ID = max(ID)+1 from Person  

Insert into Person(ID,Name,Age) values(@ID,'Mahdi',23)  

set identity_insert AAA OFF  --Auto Increments from now on
你应该检查一下你是否应该插入你的有/没有ID的记录,我把这个负担放在你的肩上


祝你好运。

你为什么希望你的PK是连续的?你有正当的理由吗,还是你只是想让你的身份证“好看”?
DECLARE @ID int;  

select @ID = max(ID)+1 from Person  

Insert into Person(ID,Name,Age) values(@ID,'Mahdi',23)  

set identity_insert AAA OFF  --Auto Increments from now on