ユーザーがレコードを削除済みとしてマークできるMVVMアプリケーションがあります
public void DeleteRecord(object p)
{
db.entry((MyEntityCast)p).state = EntityState.Deleted;
((DelegateCommand)ICommandSave).RaiseCanExecuteChanged();
}
次にICommandSave
、このcanExecuteで保存します:
public bool canExecuteSave(object param)
{
decimal count = (from c in MyList
select c).Count(x=> db.Entry(x).State != EntityState.Unchanged);
return count !=0;
}
私の問題は、 count がListaTipoAsociado
常に削除されたアイテムをあまり返さないことです。つまり、
MyList.count = 5
であり、ユーザーが削除をマークする 2 Ítems の場合、このクエリは を返し、0
新しいMyList.count
値を として設定します3
。
私の質問は?
レコードがmarked
削除のみの場合 (まだ削除されていない場合)、クエリでそれらにアクセスできないのはなぜですか?
不足しているEF設定がありますか?
更新 2: MyList の定義
private ObservableCollection<MyEntity> _MyList;
public ObservableCollection<MyEntity> MyList
{
get { return _MyList; }
set { SetProperty(ref _MyList, value); }
}
public constructor()
{
var Q= from ta in db.MyEntity
select ta;
MyList= new ObservableCollection<MyEntity>(Q.ToList());
}
更新 3:クラス定義
public partial class MyEntity
{
public MyEntity()
{
this.Childs = new HashSet<MyEntity2>();
}
public int IntTipoAsociado { get; set; }
public string StrDescripcionTipoAsociado { get; set; }
public virtual ICollection<MyEntity2> MyEntity2{ get; set; }
}
そして文脈:
public partial class MyEntities : DbContext
{
public MyEntities()
: base("name=MyEntities")
{
}
public MyEntities(string connectioString)
: base(connectioString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<MyEntity> MyEntity { get; set; }
public DbSet<MyEntity2> MyEntity { get; set; }
}