2011-01-31 46 views
0

我開始使用LINQ到SQL。我正在嘗試插入一條記錄。這是我的代碼。LInq到SQL插入日期時間問題

FMCSA_USER_LOG _MyUserLog = new FMCSA_USER_LOG(); 

_MyUserLog.USER_ID = model.UserID; 

_MyUserLog.ACTIVITY_TYPE_ID = model.ActivityTypeID; 
_MyUserLog.ACTIVITY_TARGET = model.ActivityTarget; 
_MyUserLog.DESCRIPTION = model.Description; 
_MyUserLog.ACTIVITY_TIME = DateTime.Today; 
_MyUserLog.ACTIVITY_TYPE_ID = null; 
_MyUserLog.DESCRIPTION = null; 
db.FMCSA_USER_LOGs.InsertOnSubmit(_MyUserLog); 

db.SubmitChanges(); 

我收到了的SubmitChanges此異常:

SQLDATETIME溢出。必須介於 1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之間。

從我讀到的這個問題,它發生在你有日期字段並且它被設置爲太低的值時。然而,我在今天的日子裏唯一的日期字段。

這是記錄;我不明白我做錯了什麼。

CREATE TABLE [dbo].[FMCSA_USER_LOG](
[ID] [int] IDENTITY(1,1) NOT NULL, 
[USER_ID] [int] NULL, 
[ACTIVITY_TIME] [datetime2](7) NOT NULL, 
[ACTIVITY_TYPE_ID] [int] NULL, 
[ACTIVITY_TARGET] [varchar](50) NULL, 
[DESCRIPTION] [varchar](8000) NULL, 
CONSTRAINT [PK_FMCSA_USER_LOG] PRIMARY KEY CLUSTERED 
([ID] ASC) 
) 
+1

你改變你的數據庫模型,並沒有更新您的LINQ到SQL模型,以反映這些變化? Linq-to-SQL模型不會自動更新 - 它是給定時間的數據庫結構的快照 - 如果稍後在數據庫中更改它,還需要明確更新模型。 – 2011-01-31 20:04:50

回答

0

我花了一段時間把.net datetime壓入datetime2列。 我把它用這種方法工作:

FMCSA_USER_LOG _MyUserLog = new FMCSA_USER_LOG(); 

var MyAwesomeDateTime = DateTime.Today.ToString("yyyy-MM-dd HH:mm:ss:fff"); 
var MyAwesomeDateTime2 = DateTime.ParseExact(MyAwesomeDateTime , "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture); 

_MyUserLog.USER_ID = model.UserID; 

_MyUserLog.ACTIVITY_TYPE_ID = model.ActivityTypeID; 
_MyUserLog.ACTIVITY_TARGET = model.ActivityTarget; 
_MyUserLog.DESCRIPTION = model.Description; 
_MyUserLog.ACTIVITY_TIME = MyAwesomeDateTime2; 
_MyUserLog.ACTIVITY_TYPE_ID = null; 
_MyUserLog.DESCRIPTION = null; 
db.FMCSA_USER_LOGs.InsertOnSubmit(_MyUserLog); 

db.SubmitChanges();