我使用SqlServer 2008.这是数据库架构:(请注意,这只是为了测试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,1) primary key,
UserName varchar(50)
)
GO
create table Emp
(
EmpID int not null identity(1,1) primary key,
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
答案 0 :(得分:1)
CreatedBy
是SubSonic自动审核领域的一部分。列名为
会自动填入HttpContext.Current.User.Identity.Name
和DateTime.Now
的值。
这也是你不断收到格式错误的原因。
我建议只需将此列重命名为没有启动审计机制。
另见http://jamesewelch.wordpress.com/2008/09/24/how-to-use-custom-audit-fields-with-subsonic/