C# Linq到Sql-主键语法

C# Linq到Sql-主键语法,c#,sql-server,linq-to-sql,C#,Sql Server,Linq To Sql,我正在使用LINQtoSQL,并使用CreateDatabase方法创建数据库。我从MSDN了解到,创建自动生成的主键字段的语法是 [Column(Storage="_ID", IsPrimaryKey=true, AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsDbGenerated=true)] 有人能解释一下AutoSync.OnInsert是什么意思,以及AutoSync enum的其他成员的用法吗。例如,自动

我正在使用LINQtoSQL,并使用CreateDatabase方法创建数据库。我从MSDN了解到,创建自动生成的主键字段的语法是

[Column(Storage="_ID", IsPrimaryKey=true, AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsDbGenerated=true)]
有人能解释一下AutoSync.OnInsert是什么意思,以及AutoSync enum的其他成员的用法吗。例如,自动同步。始终、自动同步。默认值等


当我已经将列指定为主键时,DbType中“Identity”一词的意义是什么?

Identity意味着ID列有一个自动生成的值,该值将在任何插入时自动插入。第一次插入行时,ID的值将为1,下一次为2,依此类推

自动同步 指示公共语言运行库(CLR)在插入或更新操作后检索值

选项:始终、从不、更新、插入。

从不:您永远不会在实体中获得ID(只要您不从数据库加载实体)。 始终意味着在每次插入或更新Linq2Sql操作后,它将从数据库中检索值


Identity表示ID列具有自动生成的值,该值将在任何插入时自动插入。第一次插入行时,ID的值将为1,下一次为2,依此类推。对于自动同步,请参阅此站点:它指定Linq2Sql何时获取ID的值。在您的情况下,它将仅在插入操作后检索生成的ID。MSDN没有太多解释。例如,总是返回值、自动选择值和从不返回值之间有什么区别?我将我的评论摘要作为答案发布。