EDMXファイルから生成されたDbContextクラスを使用してプロジェクトを作成しています。状況によっては認証ステータスに基づいてレコードの一部をフィルタリングし、DbContextクラスからレコードを受け取った後にレコードをフィルタリングするコードを書き直すのではなく、元のDbContextを継承する別のクラスを簡単に作成できると仮定しましたgetterとsetterをオーバーライドし、代わりに新しいクラスを使用します。このような何か:DbContextは、基本プロパティにアクセスする際のDbSetプロパティゲッターをオーバーライドします。
public partial class AutogeneratedBaseClass : DbContext
{
...
public virtual DbSet<Record> Records { get; set; }
...
}
public class ChildClass : AutogeneratedBaseClass
{
...
public override DbSet<Record> Records
{
get {
return (DbSet<Record>) base.Records.Where(...);
}
set {}
}
}
これは罰金コンパイルが、私はそれを実行するとベースがnullとデバッグ利回りで「エラーCS0175:キーワードの使用 『base』はこのコンテキストでは有効ではありません」
これを達成するにはどうすればよいですか?あるいは、別の解決策を探す必要がありますか?ありがとう!そうような継承上に組成物を使用することがおそらく最も
'DbSet 'は' IQueryable 'ですが、その逆もありません。だから 'base.Records.Where(...)'は 'DbSet 'ではなく、 'IQueryable 'です。つまり、あなたがしようとしていることは不可能です。 –