我正在考慮是否從EF CTP5中刪除剛開始的新應用程序的開發。實體框架CTP5重新加載相關實體
這裏是我的情況:
public class EnergieContext : DbContext, IEnergieContext
{
public EnergieContext()
: base("EnergieDatabase")
{
this.Configuration.ProxyCreationEnabled = false;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<RegionUser>()
.Property(ru => ru.RegionUserID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
public DbSet<Region> Regions { get; set; }
public DbSet<RegionUser> RegionsUsers { get; set; }
public class Region
{
public int RegionID { get; set; }
public string Name { get; set; }
public virtual ICollection<RegionUser> RegionUsers { get; set; }
}
public class RegionUser
{
[Key]
[Column(Order = 0)]
public int RegionUserID { get; set; }
[Key]
[Column(Order = 1)]
public int RegionID { get; set; }
[Key]
[Column(Order = 2)]
public int ZicyzUserID { get; set; }
public DateTime? DateAllocated { get; set; }
public DateTime? DateRemoved { get; set; }
public bool IsActive { get; set; }
public virtual Region Region { get; set; }
[NotMapped]
public virtual Employee ZicyzUser { get; set; }
}
我的目標是過濾掉不活動的用戶,而不是從我標記刪除的用戶爲無效,即IsActive = false;
表刪除條目...
我取得了這樣的過濾:
public Region GetRegionDetails(int regionID)
{
Region region = Regions.Where(r => r.RegionID == regionID).FirstOrDefault();
Entry(region).Collection(r => r.RegionUsers).Query().Where(ru => ru.IsActive == true).Load();
return region;
}
這將填補RegionUsers
收集所有RegionUser
個標有IsActive = true
的實體。這意味着,那些標記爲非活動從獲取離開我們:)
但是,如果我決定要更新任何RegionUser
實體IsActive = false
的變化反映了RegionUsers
收集的,但問題是該集合仍然包含我想過濾的項目。
我已閱讀,Entry(Regions).Reload()
應該從數據庫中進行讀取,遺憾的是不發生,我還是最終堅持的「無效」的項目,就不會離開:(
請幫助:)
謝謝!
Nermin。
CTP5是過時的版本。你應該使用EF 4.1RC – 2011-03-30 14:40:52
嗨拉迪斯拉夫,其實我使用4.1 RC,對不起誤導:( – bignermo 2011-03-31 05:29:18