EF Code First计算Modified和Created属性
本文关键字:Created 属性 Modified 计算 Code First EF | 更新日期: 2023-09-27 18:23:42
给定以下类,是否有方法首先在EF代码中自动计算实体的Created和Modified属性?
public class BaseEntity
{
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
public DateTime Created { get; set; }
public DateTime Modified { get; set; }
}
属性可以完成吗?
我在EF中为此使用了一个存储库模式。
POCO可能实现
public interface IFQuickAudit {
Nullable<DateTimeOffset> CreatedOn { get; set; }
Nullable<long> CreatedBy { get; set; }
Nullable<DateTimeOffset> ChangedOn { get; set; }
Nullable<long> ChangedBy { get; set; }
}
如果它执行了,则在Add或CHange方法期间,基本存储会检查此项并设置值
public class RepositoryBase<TPoco>
//...
public virtual OperationResult Add(TPoco poco)
var entityQA = poco as IFQuickAudit;
if (entityQA != null) {
entityQA .CreatedBy = userId;
entityQA .CreatedOn = when;
}
// checks...
Context.Set<TPoco>().Add(poco);
// similar for Chnage routine
根据http://msdn.microsoft.com/en-us/library/gg193958.aspx:
[DatabaseGenerated(DatabaseGenerationOption.Computed)]
public DateTime DateCreated { get; set; }
当代码第一次生成时,您可以使用在字节或时间戳列上生成的数据库数据库,否则只应在指向现有数据库,因为代码先行将无法确定计算列的公式。
我从来没有尝试过,但看起来它会起作用,我很高兴也学到了这一点。