방금 시작한 새 응용 프로그램 개발시 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;
, 비활성으로 삭제 된 사용자를 표시 테이블에서 항목을 삭제하는 대신 비활성 사용자를 필터링하는 것입니다 ...
I : 여기
내 상황입니다 이 같은 필터링 달성 :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
수집을 채울 것입니다엔티티는 IsActive = true
으로 표시됩니다. 그게 내가 변화가 RegionUsers
수집에 반영됩니다 IsActive = false
와 RegionUser
개체 중 하나를 업데이트하기로 결정하지만 문제가있는 경우 컬렉션이 여전히 포함되어 비활성으로 표시 사람들은, :)
그러나 페치에서 우리를 남아 있다는 것을 의미한다 내가 걸러 내고 싶은 아이템.
나는 Entry(Regions).Reload()
이 발생하지 않는 불행하게도, 데이터베이스에서 읽기를 수행해야하고 나는 여전히 :(
가 : 도와주세요 떠나지 않을 것 그 "비활성"항목 붙어 결국 읽었습니다
감사합니다.
Nermin.
CTP5 오래된 버전입니다. 당신은 EF 4.1RC –
안녕 Ladislav, 실제로 4.1 RC를 사용하고있다 misinforming에 대한 미안해 : ( – bignermo