我的数据库表是这样的
CREATE TABLE MYBUDGET.tbl_CurrentProperty
(
[PropID] INT NOT NULL IDENTITY(1,1),
[UpdatedOn] DATETIME NOT NULL,
[Amount] MONEY NOT NULL,
[Remarks] VARCHAR(100) NOT NULL,
)
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT PK_CurrentProperty_PropID PRIMARY KEY ([PropID])
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT DF_CurrentProperty_UpdatedOn DEFAULT (DATEADD(MINUTE,30,DATEADD(HOUR, 5, GETUTCDATE()))) FOR [UpdatedOn]
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT CK_CurrentProperty_Amount CHECK([Amount] > -1)
GO
我正在使用 LINQ to SQL。在 C# 中,我只需要传递 [Amount] 和 [Remarks] 字段,其他字段必须使用它们的默认值([PropID] 和 [UpdatedOn])。
在 C# 中,我创建 tbl_CurrentProperties 对象,如下所示,
tbl_CurrentProperties currentProperties = new tbl_CurrentProperties();
currentProperties.Amount = 50.00M;
currentProperties.Remarks = "remarks";
然后将对象提交到数据上下文。但在这里,Linq 分配'1/1/0001 12:00:00 AM'
给 UpdatedOn 字段。但这违反了 SQL 日期时间范围1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM
并发生异常。此外,我无法为DateTime
字段手动分配 NULL 值,因为它是不可为空的类型。无论如何,我需要这样做才能使用其默认约束。我该怎么做呢?
PS:我想这样使用它,因为我的数据库是在线的,而用户位于不同的位置。所以如果我使用 DateTime.Now,用户机器中的时间可能是错误的,它会在 DB 中插入一个错误的值。我需要始终使用 SQL 服务器时间。