0

私の RadGrid は、セッション状態に保持されているエンティティ フレームワーク ICollection から取り込まれます。主キーは、データベース内の自動インクリメント フィールドです。ユーザーは、複数の行をデータベースに送信せずにグリッドに追加できます。ユーザーが保存する前に行を削除した場合、削除する特定のエンティティをどのように見つけますか? これまでのところ、データが実際に保存されるまで、主キーは新しい行に割り当てられません。

DataContext context = (DataContext)Session["context"];

protected void rgEmployees_DeleteCommand(object source, GridCommandEventArgs e) {
    int MyID = Tools.GetInt((e.Item as GridDataItem).
        OwnerTableView.DataKeyValues[e.Item.ItemIndex]["My_ID"]);
    Employee ee= context.Employee.SingleOrDefault(t => t.ID == MyID); 
    // The problem with above line is that t.ID has not been established yet.
    context.Employee.Remove(ee);
}
4

1 に答える 1

0

エンティティが追加した順序になると仮定すると、ここでの唯一のオプションはインデックスで行うことだと思います。

protected void rgEmployees_DeleteCommand(object source, GridCommandEventArgs e) {
    Employee ee = context.Employee.AsEnumerable().ElementAt(e.Item.ItemIndex); 
    context.Employee.Remove(ee);
}
于 2013-11-11T17:03:53.197 に答える