エンティティに 3 つのプロパティがあるかどうかを確認したいと思います。CreatedDate、ModifiedDate、および ModifiedBy。
現在、オブジェクト コンテキストの SaveChanges() メソッドに含まれていることがわかっているものをハードコーディングしているだけです。
例えば:
bool newEntity = (entry.State == EntityState.Added);
if (type == typeof(Foo))
{
var r = entry.Entity as Foo;
if (r != null)
{
if (newEntity)
r.CreatedDate = DateTime.Now;
r.ModifiedDate = DateTime.Now;
r.ModifiedBy = HttpContext.Current.User.Identity.Name;
}
}
次のようなコードを使用して、オブジェクトに特定のメソッドがあるかどうかを確認できることを知っています。
public static bool HasMethod(this object objectToCheck, string methodName)
{
var type = objectToCheck.GetType();
return type.GetMethod(methodName) != null;
}
しかし、エンティティを直接キャストせずに、これらのプロパティを取得するにはどうすればよいでしょうか?
どうすれば次のようなことができますか:
if (HasMethod(entry.Entity))
entry.Entity.ModifiedDate = DateTime.Now;
ASP.Net MVC 4 を使用しています。