0
我正在從一個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 {}
}
}
編譯沒有問題,但是當我運行它的基礎是零和調試收益率「錯誤CS0175:使用關鍵字‘基地’的無效在這種情況下」
有沒有辦法做到這一點?或者我需要尋找另一種解決方案?謝謝!
'DbSet'是'IQueryable ',但反之亦然。因此'base.Records.Where(...)'是一個常規的'IQueryable '而不是'DbSet '。換句話說,你所嘗試的是不可能的。 –