问题描述
||
我使用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/