Я использую EF 4.2 (сначала база данных) с шаблонами DBContext T4 для создания моих классов POCO. Это работает очень хорошо, но теперь я наткнулся на проблему с абстрактным базовым классом:
Мне нужен мой сгенерированный T4 класс POCO для наследования от пользовательского абстрактного класса, который имеет абстрактные свойства:
//my abstract base class (shortened)
public abstract class BaseClass {
public abstract int? Property1 { get; set; }
public abstract int? Property2 { get; set; }
// a lot of methods that work with above properties
}
//my T4 generated entity (shortened)
public partial class Entity {
public Nullable<int> Property1 { get; set; }
public Nullable<int> Property2 { get; set; }
}
//and a partial class to make the T4 entity inherit from my abstract class
public partial class Entity : BaseClass {
}
Моя проблема в том, что компилятор не будет строить это, потому что свойства в классе T4 не помечены как "переопределить". В LINQ 2 SQL была возможность изменить модификатор наследования для свойства сущности, но я не могу найти эту опцию в EF Model Designer.
Есть ли способ сказать EF Model Designer и шаблонам T4 помечать определенные свойства как переопределенные (я мог бы, конечно, изменить сгенерированный код C #, но эти изменения будут перезаписаны при повторном запуске T4)? Есть ли другой способ сделать эту компиляцию и работать?
Большое спасибо,
~ saxx
Обновление 1: исправлена опечатка.