0
我有一個實體,我只需要返回給定字段值大於零的記錄。我已經看到了edmx中的條件映射的例子,這看起來像我所需要的。但是,我的項目首先在EF 4.1代碼中。 有沒有辦法使用代碼優先的方法做到這一點?首次使用代碼的實體框架條件映射?
我有一個實體,我只需要返回給定字段值大於零的記錄。我已經看到了edmx中的條件映射的例子,這看起來像我所需要的。但是,我的項目首先在EF 4.1代碼中。 有沒有辦法使用代碼優先的方法做到這一點?首次使用代碼的實體框架條件映射?
我不認爲有一個內置的方法來實現這一點,但是你可以在你的DbContext中應用過濾的屬性,最初這將是隻讀的,但我沒有看到你不應該能夠創建你的原因自己DbSet實施反射回另一DbSet(ProxyDbSet)
只讀例如:
class MyDbContext : DbContext
{
public IDbSet<User> Users { get; set; }
public IQueryable<User> Admins
{
get
{
return from user in users
where user.Role == "admin"
select user;
}
}
}
謝謝@Polity。如果我理解正確,這將導致EF返回我的整個記錄集,然後分配linq過濾的設置,在你的例子中,Admins IQuaryable屬性。我希望不要這樣做,因爲整個系列會很大。但是,從我所知道的情況來看,這可能是最好的解決方案。非常感謝您的快速回復! – RockyMountainHigh
@RockyMountainHigh - 沒有它實際上,請注意,DbSet實現IQueryable以及方法本身返回IQueryable。這意味着調用管理員不會返回任何內容,而只是查詢的定義。只要您開始對管理員的結果進行foreach,就會生成一個SQL查詢,其中包含用戶角色的where過濾器。因此,這與條件映射一樣有效 – Polity
完美!謝謝!今天學點新東西?檢查! – RockyMountainHigh