Я рекомендую создать интерфейс для ваших объектов, а не менять базовый класс. Сгенерированный код не должен быть изменен.
Обновление: Из-за необъяснимых понижений голосов я добавляю приведенный ниже код, который точно объясняет, что я имею в виду:
// Generated by EF4
public partial class EntityA : EntityObject
{
...
}
// Interface defined in another file
public interface IGClass<T> where T : IGClass<T>
{
string GetStr();
}
// Automatically generated by T4 template
public partial class EntityA : IGClass<EntityA>
{
public virtual string GetStr()
{
return "GClass";
}
}
Полученный код использует CRGP, но делает это через интерфейс вместо базового класса.
Более подробная информация о шаблонах T4 здесь .