基于this link看起来我可以通过简单地启用更改跟踪来使用Sql Server 2008免费获得日期插入/日期修改信息(无需触发器等)。我正在使用Entity Framework来访问数据。我的问题是,如何通过Entity Framework和LINQ访问数据库记录的日期修改/日期插入信息?
我正在使用VS2008,所以我还没有新的EF v4东西(但如果可以在新EF中完成,请告诉我。)
谢谢。
答案 0 :(得分:0)
噢,没关系。我发现自己很容易在每个表中创建Inserted和LastModified列,为每个列设置默认值,并为LastModified构建更新触发器。这似乎是人们所做的,变化跟踪看起来像是主要用于同步。对?
答案 1 :(得分:0)
好的,这很好用(也见this article)...
public partial class MyEntities
{
partial void OnContextCreated()
{
this.SavingChanges += new System.EventHandler(CustomSavingChangesLogic);
}
/// <summary>
/// Apply timestamps
/// </summary>
public void CustomSavingChangesLogic(object sender, System.EventArgs e)
{
var changedEntities = ((ObjectContext)sender).ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified);
foreach (var stateEntryEntity in changedEntities)
{
if(!stateEntryEntity.IsRelationship) {
var entity = stateEntryEntity.Entity;
var lastModifiedPropInfo = entity.GetType().GetProperty("LastModified");
if (lastModifiedPropInfo != null)
lastModifiedPropInfo.SetValue(entity, DateTime.UtcNow, null);
if (stateEntryEntity.State == EntityState.Added)
{
var createdPropInfo = entity.GetType().GetProperty("Created");
if (createdPropInfo != null)
createdPropInfo.SetValue(entity, DateTime.UtcNow, null);
}
}
}
}
}