2

在我的数据库中,每个表的末尾有 5 个字段:

  • 状态
  • 创建日期
  • 由...制作
  • 修改日期
  • 修改者

我正在使用实体框架为数据库生成 POCO 对象。我有 Dal 层来处理所有的 CRUD 操作。

不断复制和粘贴相同的代码来填写 5 个字段是很痛苦的。我想知道是否有人有一个通用方法可以处理任何实体对象并为我填写字段。

4

1 回答 1

2

您应该实现一个具有这些属性的通用基类,并从该基类派生您的 POCO 类。

您可以通过覆盖上下文类中的 SaveChanges() 来自动处理 Create/ModifiedDate 和 User 等设置。这使对象消费者无需在使用类的任何地方设置这些属性。

这是来自我的一个项目的此类代码的示例(在我的例子中,具有 LastModified 属性的对象实现了接口 IHasLastModified):

    public override int SaveChanges()
    {
        DateTime now = DateTime.UtcNow;
        foreach (ObjectStateEntry entry in (this as IObjectContextAdapter).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified))
        {
            if (!entry.IsRelationship)
            {
                IHasLastModified lastModified = entry.Entity as IHasLastModified;
                if (lastModified != null)
                    lastModified.LastModified = now;
            }
        }

        int changes = base.SaveChanges();
        return changes;
    }
于 2013-01-16T18:55:59.520 回答