これらのプロパティを持つ共通の基本クラスを実装し、その基本クラスからPOCOクラスを派生させる必要があります。
コンテキストクラスでSaveChanges()をオーバーライドすることにより、Create/ModifiedDateやUserなどの設定を自動的に処理できます。これにより、オブジェクトコンシューマーは、クラスが消費されるすべての場所でこれらのプロパティを設定する必要がなくなります。
これが私のプロジェクトの1つからのその種のコードの例です(私の場合、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;
}