无法使用Subsonic 2.2插入记录SqlServer

问题描述

|| 我使用sqlServer2008。这是数据库架构:(请注意,这仅是为了测试SubSonic)
Create Table Dept
(
 DeptID int not null Identity(1,1) primary key,DeptName varchar(20),Location varchar(30) 
) 

GO

 Create Table tUsers
 (
 UserID int not null identity(1,UserName varchar(50)
 )
 GO

create table Emp
(
 EmpID int not null identity(1,DeptID int foreign key references dept(deptid),CreatedBy varchar(50),EmpName varchar(50)
 )
这是保存员工的C#代码
Emp em = new Emp();            
em.DeptID = 3;
em.CreatedBy = \"Temp1\";
em.EmpName = \"Temp3\";            
em.Save();
这是sql事件探查器跟踪:
exec sp_executesql N\'/* GetInsertsql(Emp) */ INSERT INTO [dbo].[Emp]([DeptID],[CreatedBy],[EmpName]) VALUES(@DeptID,@CreatedBy,@EmpName);SELECT ScopE_IDENTITY() AS newID;\',N\'@DeptID int,@CreatedBy varchar(8000),@EmpName varchar(5)\',@DeptID=3,@CreatedBy=\'\',@EmpName=\'Temp3\'
可以看出,即使从应用程序传递了值,CreatedBy始终为空。 (以前,该列是外键,但是SubSonic总是抛出(格式)错误,因此,根据SubSonic论坛的建议,我将其更改为varchar)。 知道出了什么问题吗? 提前致谢。 Sathya Narayanan     

解决方法

“ 3”是SubSonic的自动审核字段的一部分。列名为 由...制作 创建于 通过修改 修改时间 用
HttpContext.Current.User.Identity.Name
DateTime.Now
的值自动填充。 这就是为什么您不断收到格式错误的原因。 我建议只重命名此列,以免影响审核机制。 另请参见http://jamesewelch.wordpress.com/2008/09/24/how-to-use-custom-audit-fields-with-subsonic/