Методы расширения делают свое дело. Но, конечно, это методы , а не правильные свойства, которые вы задаете в своем примере (свойства расширения еще не существуют в платформе, только методы расширения).
public static class EntityObjectExtensions
{
public static bool IsDeleted(this EntityObject obj)
{
return obj.EntityState == System.Data.EntityState.Deleted;
}
public static bool Delete(this EntityObject obj)
{
Context.DeleteObject(obj);
}
public static bool IsInserted(this EntityObject obj)
{
return obj.EntityState == System.Data.EntityState.Added;
}
public static bool Insert(this EntityObject obj)
{
Context.AddObject(obj.GetType().Name, obj);
}
}
Несомненно, это решение является самым элегантным и ближайшим к вашему требованию. Не нужно ни касаться генерации кода, ни дублировать один и тот же код на всех ваших классах. Если что-то должно развиваться в этих методах, изменения будут сделаны в одном месте, и все ваши классы получат от этого пользу.