如何在Linq To SQL中的插入/更新中跳过默认值列?

时间:2008-10-23 00:26:22

标签: .net linq linq-to-sql

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

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

3 个答案:

答案 0 :(得分:5)

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

在我的timestamp列的DBML设计器中,属性设置为

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

我假设你真的是指时间戳而不是日期时间。如果是后者,请忽略这一点。

答案 1 :(得分: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);
    }

答案 2 :(得分:1)

好像你忘了为该属性设置自动同步始终