在自动递增字段上设置自定义标识值

| 我在数据库(Sql server 2008)中有一个ID列,其中设置了自动数字。 我正在使用EF和linq2entities 在某些特定情况下,我希望能够设置自定义ID号(显然,我完全确定不会重复此值),例如,我将使用它来“填充”由于删除而导致的丢失ID号。我想将自动增量道具保留在数据库中,问题是当我执行linq语句时,数据库会分配下一个ID号,而不是我喜欢的ID号。 也许有点奇怪,但是可以使用linq2entities吗? 提前致谢!     
已邀请:
我相信除非有某种方法可以在实体框架中关闭\“ SET Identity_Insert TableName ON \”,否则它是不可能的。 基本上,在SQL Server中,当您在字段上发送标识时,除非您运行以下语句,否则无法手动填充它
SET Identity_Insert TableName ON
运行此语句后,您将能够手动填充“标识字段”。 我唯一想到的其他选择是从列中删除Identity属性,并使用部分类为Entity Framework中的字段创建自己的增量器 像这样
public partial class EntityClassName : global::System.Data.Objects.DataClasses.EntityObject, IEntity
{
    partial void InitializeFields();

    Int64 IEntity.IdentityColumn
    {
        get { return IdentityColumn; }
        set { //some code for an incrementer 
              //and the ability to set manually 
              //if value provide is not null
            }
    }

}
    
我不想直言不讳地说这是不可能的,但这对于L2E来说是相当不错的事情。但这是一个非常简单的INSERT触发器。您将通过INSERTED(Google会解释)获得插入的行,然后使用所需的任何疯狂逻辑更新该行。 我认为您可以花费数小时来尝试解决L2E问题,也可以在二十分钟之内通过触发器完成操作。     

要回复问题请先登录注册