【问题标题】:Linq To Sql - Primary Key syntaxLinq To Sql - 主键语法
【发布时间】:2013-10-31 06:11:03
【问题描述】:

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

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

谁能解释一下 AutoSync.OnInsert 是什么意思以及 AutoSync 枚举的其他成员的用途是什么? 。IE。 AutoSync.Always、AutoSync.Default 等。

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

【问题讨论】:

  • Identity 表示 ID 列有一个自动生成的值,该值将在任何插入时自动插入。当您第一次插入一行时,ID 的值将在下一次为 2 时为 1,依此类推。
  • Autosync 参考这个站点:msdn.microsoft.com/en-us/library/… 它指定 Linq2Sql 何时获取 Id 的值。在您的情况下,它只会在插入操作之后检索生成的 Id。
  • MSDN 解释不多。例如,总是返回值、自动选择值和从不返回值有什么区别?
  • 我发布了我的 cmets 的摘要作为答案。

标签: c# sql-server linq-to-sql


【解决方案1】:

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

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

选项:始终、从不、OnUpdate、OnInsert。

Source

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

Source

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多