客戶端在運行我的代碼時出錯。他們向我發送了profilder的SQL。在運行原始SQL時將數據類型varchar轉換爲datetime時出錯,但在LINQ to SQL調用時沒有將datetime轉換爲datetime
當我將其粘貼到SQL Server Management Studio中它失敗:錯誤轉換數據類型爲varchar爲datetime
然而,當我在我的本地開發框或其他客戶生產服務器上運行它不會失敗。
爲了測試我創建了一個簡單的應用程序包含,看起來像一個實體L2S的datacontext:
public class UserAccount
{
public int Id { get; set; }
public string Username { get; set; }
public DateTime? LastActivity { get; set; }
}
插入一條記錄,然後更新它:
var account = db.UserAccounts.Single(a => a.Username == "Mojo");
account.LastActivity = DateTime.Now;
db.SubmitChanges();
的記錄獲取更新數據庫。但是,當我抓住從探查的T-SQL:
exec sp_executesql N'UPDATE [UserAccount] SET [LastActivity] = @p2 WHERE ([Id] = @p0) AND ([Username] = @p1) AND ([LastActivity] IS NULL)',N'@p0 int,@p1 nvarchar(4),@p2 datetime',@p0=1,@p1=N'Mojo',@p2='2009-11-10 14:04:41.7470000'
,並在SQL Server Management Studio中執行它,我得到:錯誤轉換數據類型爲varchar爲datetime
我缺少什麼?
什麼是DB中的字段類型LastActivity? – 2009-11-10 07:46:22
LastActivity DateTime null – Pauly 2009-11-11 04:59:54