【问题标题】:How do you skip default value columns on insert/update in Linq To SQL?如何在 Linq To SQL 中跳过插入/更新的默认值列?
【发布时间】:2008-10-23 00:26:22
【问题描述】:

如何通过 Linq To SQL 和 Linq To SQL 插入/更新列使用默认值?我特别关心时间戳字段。

我已尝试将该列设置为只读并自动生成,因此它停止尝试输入 DateTime.MinValue,但它似乎没有在更新时更新。

【问题讨论】:

    标签: .net linq linq-to-sql


    【解决方案1】:

    您需要为时间戳列设置 IsVersion=true。请参阅ColumnAttribute 的参考资料。

    在我的时间戳列的 DBML 设计器中,属性设置为

    AutoGenerated=true
    AutoSync=Always
    Nullable, Primary Key, and ReadOnly = false
    SQLDataType = rowversion not null
    Timestamp = true
    UpdateCheck = never
    

    我假设您真正的意思是时间戳而不是日期时间。如果是后者,请忽略它。

    【讨论】:

      【解决方案2】:

      数据库默认值只会在创建行时插入值。除非您想添加触发器,否则它不会对更新做任何事情。

      或者,您可以向 DataContext 类添加部分方法。为您的项目添加一个新文件:

      public partial class YourDatabaseDataContext
      {
          partial void InsertYourTable(YourTable instance)
          {
              instance.LastUpdateTime = DateTime.Now;
      
              this.ExecuteDynamicInsert(instance);
          }
      
          partial void UpdateYourTable(YourTable instance)
          {
              instance.LastUpdateTime = DateTime.Now;
      
              this.ExecuteDynamicUpdate(instance);
          }
      

      【讨论】:

        【解决方案3】:

        您好像忘记将属性的 AutoSync 设置为 always

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多