如何通过Linq-To-SQL和Linq-To-SQL使用默认值插入/更新列?我特别关注时间戳字段。
我已经尝试将该列设置为只读和自动生成,所以它停止了输入DateTime.MinValue的尝试,但它似乎没有在更新时更新。
您需要为时间戳列设置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。