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モデルデザイナーでこのオプションを見つけることができません。
EFモデルデザイナーとT4テンプレートに特定のプロパティをオーバーライドとしてマークするように指示する方法はありますか(もちろん、生成されたC#コードを変更できますが、この変更はT4が再度実行されると上書きされます)?これをコンパイルして動作させる他の方法はありますか?
どうもありがとう、〜saxx
更新1:タイプミスを修正しました。