これが私が達成しようとしていることです:
一部のエンティティは "論理的に削除" する必要があるため、"IsDeleted" というフィールド (およびそれぞれの列) を追加したいと思います。このプロパティは、DAL からのみアクセスできるようにしたいと考えています (これは、フレンド アセンブリを介して実現できます)。また、インターフェイス (IDeletable) を介して、DAL がこれらすべてのエンティティを同じように処理できるようになれば幸いです。
両方の目標を達成するために、IDeletable を内部インターフェイスにし、このインターフェイスを実装するクラスで明示的なインターフェイスを利用できます。
bool IDeletable.IsDeleted { get; set; }
DAL コードは、おそらく次のようになります。
public void Delete<T>(T entity)
{
var d = entity as IDeletable;
if(d != null)
//soft delete
d.IsDeleted = true;
else
//hard delete
//....
}
問題は、私が知る限り、EF Code First には列を生成する方法がないことです。式を使用してみましたが、IDeletable にキャストしようとするとエラーが発生します。
式なしで EF Code First に強制的に列を作成させる方法はありますか?