【发布时间】:2008-10-23 00:26:22
【问题描述】:
如何通过 Linq To SQL 和 Linq To SQL 插入/更新列使用默认值?我特别关心时间戳字段。
我已尝试将该列设置为只读并自动生成,因此它停止尝试输入 DateTime.MinValue,但它似乎没有在更新时更新。
【问题讨论】:
标签: .net linq linq-to-sql
如何通过 Linq To SQL 和 Linq To SQL 插入/更新列使用默认值?我特别关心时间戳字段。
我已尝试将该列设置为只读并自动生成,因此它停止尝试输入 DateTime.MinValue,但它似乎没有在更新时更新。
【问题讨论】:
标签: .net linq linq-to-sql
您需要为时间戳列设置 IsVersion=true。请参阅ColumnAttribute 的参考资料。
在我的时间戳列的 DBML 设计器中,属性设置为
AutoGenerated=true
AutoSync=Always
Nullable, Primary Key, and ReadOnly = false
SQLDataType = rowversion not null
Timestamp = true
UpdateCheck = never
我假设您真正的意思是时间戳而不是日期时间。如果是后者,请忽略它。
【讨论】:
数据库默认值只会在创建行时插入值。除非您想添加触发器,否则它不会对更新做任何事情。
或者,您可以向 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);
}
【讨论】:
您好像忘记将属性的 AutoSync 设置为 always。
【讨论】: