如何在LINQ-To-SQL中手动设置标识字段(IDENTITY INSERT)?

9

我有一张表,通常情况下,在插入时自动键会递增。但是,有些情况下,我们希望设置ID(就像在SQL中轻松完成的“IDENTITY INSERT”一样)。

使用LINQ to SQL有办法实现吗?

谢谢。


你找到解决方案了吗?顺便问一下,为什么你接受了没有给你解决方案的答案? - Piotr Owsiak
2个回答

4

4
我刚刚在寻找如何在EF中实现,而不是LINQ-to-SQL中实现,但是这个(被接受的)答案似乎没有帮助:这两个链接都解释如何使用数据库生成的ID,而不是暂时覆盖它们,就像我(和这里的原贴作者)试图做的那样。或者我错过了什么吗?谢谢。 - Rup
我不知道,我猜Timothy试过这段代码了。你试过吗?也许IsDbGenerated可以通过手动设置标识来解决问题。EF代表什么(忘记了)? - Eduardo
这是Entity Framework,另一个.NET ORM。我会提出一个关于它的新问题 - 谢谢。 - Rup
@RalphWillgoss 第一个链接的答案完全相反! - Piotr Owsiak
1
@Eduardo 不,我使用 LINQPad 生成 DataContext,你不能操纵它。无论如何,我所做的是只需从目标列中删除 IDENTITY 并重新运行 LINQPad,这样 IsDbGenerated 就会变为 false - 对于我的简单情况来说完美地工作了。 - Piotr Owsiak
显示剩余2条评论

1
如果您想让IDENTITY始终保持关闭状态,请编辑该模型。
public class TableName
{

    [Key,DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ID { get; set; }

...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接