J'utilise le Microsoft.AspNet.EntityDataSource
comme ceci:Microsoft.AspNet.EntityDataSource donne la valeur de la propriété de mauvaise entité au cours de la mise à jour ou suppression
ASPX:
<asp:GridView runat="server" DataSourceID="eds" ID="gv" AutoGenerateColumns="false" DataKeyNames="ID">
<Columns>
<asp:BoundField DataField="ID" HeaderText="#" ReadOnly="true" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Code" HeaderText="Code" ReadOnly="true" />
<asp:CommandField ButtonType="Button" ShowEditButton="true" ShowDeleteButton="true" />
</Columns>
</asp:GridView>
<ef:EntityDataSource runat="server" ID="eds" ConnectionString="name=Entities"
EnableDelete="true" EnableInsert="True" EnableUpdate="True"
EntitySetName="awCategoryGroups" DefaultContainerName="Entities" EnableFlattening="False"
Where="it.isValid=true" OrderBy="it.Name asc" OnDeleting="eds_Deleting">
</ef:EntityDataSource>
Il crée une table avec des enregistrements (entités) tapez awCategoryGroup
. Le problème est, quand je veux supprimer l'enregistrement en utilisant le bouton de suppression de GridView CommandField
qui appelle la méthode eds_Deleting
.
C#:
protected void eds_Deleting(object sender, Microsoft.AspNet.EntityDataSource.EntityDataSourceChangingEventArgs e)
{
awCategoryGroup cg = (awCategoryGroup)e.Entity;
cg.isValid = false;
e.Context.SaveChanges();
e.Cancel = true;
}
La base de données ressemble à ceci lors de la sélection des données pour GridView
.
DB:
ID Name Code isValid
==========================================
19 Roles UserRole True
20 Actions ActionType True
L'objectif devrait être de fixer isValid
colonne False
. Mais lorsque la méthode eds_Deleting
est appelée, le (awCategoryGroup)e.Entity
contient les valeurs correspondantes de ses propriétés, à l'exception de la propriété bool
(en DB sous la forme bit
), valeur isValid
. Il devrait être True
, mais il est déjà False
avant de le définir. Aucune sauvegarde ne se produit lors de l'appel e.Context.SaveChanges();
, car les propriétés ne sont pas modifiées.
Est-ce un bug ou est-ce que je fais quelque chose de mal? Cette philosophie a bien fonctionné sur EF4, mais après la migration vers EF6, il y a le problème.