Je suis en train de réfléchir à la possibilité d'abandonner l'EF CTP5 dans le développement de la nouvelle application que je viens de commencer.Entity Framework CTP5 Recharger les entités liées
Voilà ma situation:
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; }
}
Mon but est de filtrer les utilisateurs inactifs, plutôt que de supprimer des entrées de la table je marque l'utilisateur supprimé comme inactif, à savoir IsActive = false;
...
I oBTENUS le filtrage comme celui-ci:
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;
}
cela remplirait la collection RegionUsers
avec tous RegionUser
entités qui sont marquées avec IsActive = true
. Cela signifie que ceux qui sont marqués comme inactifs quitté notre :) de récupération
Cependant, si je décide de mettre à jour des RegionUser
entités IsActive = false
le changement se reflète dans la collection RegionUsers
, mais le problème est que la collection contient encore l'élément que je souhaite filtrer.
J'ai lu que Entry(Regions).Reload()
doit effectuer une lecture à partir de la base de données, malheureusement, cela ne se produit pas et je finis toujours coincé avec les éléments « inactifs » qui ne veut pas quitter :(
S'il vous plaît aider :)
Merci!
Nermine.
CTP5 est une version obsolète. Vous devriez utiliser EF 4.1RC –
Salut Ladislav, en fait j'utilise 4.1 RC, désolé pour désinformer :( – bignermo