Я обдумываю, следует ли отказаться от EF 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.