2013-10-31 142 views
0

我正在使用LINQ To SQL并使用CreateDatabase方法创建我的数据库。我从MSDN明白语法来创建一个自动生成的主键字段是Linq To Sql - 主键语法

[Column(Storage="_ID", IsPrimaryKey=true, AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsDbGenerated=true)] 

有人能解释我这是什么由AutoSync.OnInsert意思,什么是自动同步枚举的其他成员的使用情况如何? .IE。 AutoSync.Always,AutoSync.Default等。

当我已经指定列作为主键时,DbType中的'Identity'这个词有什么意义?

+0

标识表示ID列具有自动生成的值,将自动插入任何插入。当您第一次插入一行时,下一次2时ID的值将为1,依此类推。 – Dannydust

+0

对于自动同步,请参阅以下网站:http://msdn.microsoft.com/en-us/library/system.data.linq.mapping.autosync.aspx 它指定Linq2Sql何时会获得Id的值。在你的情况下,它只会在插入操作后检索生成的Id。 – Dannydust

+0

MSDN并没有太多解释。例如,总是返回值,自动选择值并从不返回值有什么区别? – Curious

回答

1

标识表示ID列有一个自动生成的值,将自动插入任何插入。当您第一次插入一行时,下一次2时ID的值将为1,依此类推。

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

选项:总是,从不,OnUpdate,OnInsert。

Source

从不:你将永远不会回到你的实体的ID(只要你将不会从数据库中加载实体)。总是意味着在每次插入或更新Linq2Sql操作后,它都会从数据库中检索值。

Source