1

我使用 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 总是抛出 (Format) 错误,因此我根据 SubSonic 论坛的建议将其更改为 varchar)。

知道出了什么问题吗?

提前致谢。

沙迪亚纳拉亚南

4

1 回答 1

1

CreatedBy是 SubSonic 自动审核字段的一部分。列命名

  • 由...制作
  • 创建于
  • 修改者
  • 修改后

自动填充 和 的HttpContext.Current.User.Identity.NameDateTime.Now

这也是您不断收到格式错误的原因。

我建议简单地重命名此列,以免影响审计机制。

另请参阅http://jamesewelch.wordpress.com/2008/09/24/how-to-use-custom-audit-fields-with-subsonic/

于 2011-05-24T15:04:32.847 回答