0

ユーザーがレコードを削除済みとしてマークできる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; }
}
4

0 に答える 0