作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景内容:
我有一个名为Project的数据库表和一个具有相同架构的名为ProjectHistory的表。我正在使用nhibernate,所以我也有一个名为Project的域对象和一个名为ProjectHistory(从Project派生)的域对象。
目标
我的目标是检索这些表中的数据,并按发生的事件顺序将它们放回原处,并让C#代码输出最近n次更改的典型审核跟踪屏幕
细节
两个表都具有以下字段和数据类型
ID-(int)-Project中的主键,注意:历史记录表中没有PK
LastUpdated(日期时间)
名称(varchar)
说明(varchar)
时间戳记(timestamp)
Projecthistory表的目标是,每当我对Project表进行更新时,ProjectHistory表都会插入带有旧记录的新行,这样我就可以获得完整的审核记录。
我通过使用以下触发器来完成此操作:
ALTER TRIGGER ProjectTrigger
ON Project
AFTER UPDATE
AS
SET NOCOUNT ON
insert into ProjectHistory
select * from deleted
public IEnumerable<Project> GetHistory<Project, ProjectHistory>(int numberOfChanges)
{
IEnumerable<Project> current;
IEnumerable<Project> history;
current = Session.Query<Project>()
.OrderByDescending(r => r.LastUpdated)
.Take(numberOfChanges);
history = Session.Query<ProjectHistory>()
.OrderByDescending(r => r.LastUpdated).Cast<Project>();
IEnumerable<Project> all = current.Concat(history);
return all.OrderByDescending(r => r.Id).ThenByDescending(r => r.LastUpdated);
}
}
最佳答案
这是我针对一个类似项目的解决方案。创建一个视图以合并项目和项目历史表。让SQL Server做繁重的工作。
这是一个例子:
CREATE view [dbo].[VwProjectHistory] as select
OtherFieldName,
LastUpdated
from
[dbo].[Project]
union all
select
OtherFieldName,
LastUpdated
from
[dbo].[ProjectHistory]
关于c# - 如何在两个SQL Server表之间检索审核跟踪,然后以正确的顺序放回它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595045/
我是一名优秀的程序员,十分优秀!