Je peuplique une grille à partir d'un objet d'entité et il affiche l'amende des données. Lorsque je fais des modifications et que je le sauve de retour, rien n'est mis à jour.
Voici mon code: p>
dans mon événement de charge: p> ma classe : p> dans le bouton pour enregistrer les modifications: p> Qu'est-ce que je fais mal? P> défini au niveau de la classe: p> défini dans ma charge: p > var bs = new BindingSource();
_entities.PaymentTypes.Where(x => x.CorporationId == _currentcorp.CorporationId).Load;
bs.DataSource = _entities.PaymentTypes.Local.ToBindingList();
dataGridView_PaymentTypes.DataSource = bs;
5 Réponses :
La base de données bidirectionnelle avec Winforms et Framework peut être obtenue en créant un ibindinglist ibindinglist code> à partir de
dbcontext code>
local code>
Observablecollection
datasource code> d'un
liaison de liaison code>. Exemple:
Désolé, je ne suis pas rentré plus tôt, j'étais malade. Quoi qu'il en soit, il dit que je ne peux pas résoudre la charge de symboles ni local. Je posterai mon code haut en haut pour votre avis.
@Erocm Quelle version du cadre d'entité? Ce qui précède devrait fonctionner pour EF 4.1+ tel qu'il utilise le dbContext code> API et non l'ancien
objetContext code> API. Vérifiez également que vous référence
system.data.entity code>.
v4.0.30319 Où et comment obtenez-vous 4.1+? J'utilise .NET 4.0 complet.
@Erocm Vous pouvez obtenir la dernière version en tant que package Nuget msdn.microsoft.com/fr- US / DATA / EE712906
OK obtenez EF 5.0 et a été capable de charger l'extension de la charge, mais cela ne trouve pas local. Aucune suggestion?
@Erocm Vous pouvez toujours utiliser objetContext code> API
Vous modifiez les propriétés de la copie projetée de l'entité, tandis que l'entité elle-même reste inchangée. C'est pourquoi Save ne fonctionne pas - L'entité reste inchangée. P>
Vous avez besoin d'une des entités de liaison elle-même comme DataSource sur la grille ou de mettre à jour la propriété de l'entité correspondante lorsque vous mettez la mise à jour de la propriété de l'instance de projection. P>
Vous créez la nouvelle version de Databindinging () afin que nous supposions que cela soit une classe contrôlée par votre contexte?
En supposant que, ce que je vois, il manque, dans votre code, vous devez transmettre la nouvelle instance de DatabindingProjection à votre DBContext (si vous utilisez 4.2+ ou à l'objetContext si vous utilisez des versions plus anciennes, je vous recommanderais de migrer vers 5.0)
Vous devez joindre () les entités créées dans le contexte avant d'appeler les SAVECANGES (), je ne vois pas cela dans votre code. P>
La solution est la solution pour que vous créiez Nouveaux enregistrements à la base de données. Si vous souhaitez modifier des enregistrements à la base de données, vous ne devez pas utiliser l'approche LINQ où vous créez un nouvel objet, vous devez appeler l'objet lui-même, afin qu'il puisse avoir les proxy EF et être suivi par le Chandretracker de EF.
Pour moi, il semble que vous ayez une nouvelle classe qui n'est pas suivie par ef ..... p>
Si vous avez fait quelque chose comme ça, alors cela devrait fonctionner (je suppose une propriété Projection nommée être dans vos entités, juste pour un exemple): p> Si vous ne l'avez pas, vous devriez faire quelque chose comme ceci: P> var query = from c in _entities.PaymentTypes
where c.CorporationId == _currentcorp.CorporationId
new DataBindingProjection
{
PaymentTypeId = c.PaymentTypeId,
CorporationId = c.CorporationId,
TokenId = c.TokenId,
IsActive = c.IsActive,
Description = c.Description,
CashChargeCodeType = c.CashChargeCodeType,
SortOrder = c.SortOrder,
ExcludeCreditCode = c.ExcludeCreditCodes,
IsUpdated = c.IsUpdated,
IsAdded = c.IsAdded,
ClearUpdatedAndAdded = c.ClearUpdateAndAdded
};
foreach(var item in query)
(DbContext)YourInstanceOfContext.Set<DataBindingProjection>().Add(item);
dataGridView_PaymentTypes.DataSource = query.ToList();
.charger () code> et
.Local code> sera visible lorsque vous utilisez référence:
using System.Data.Entity;
Jetez un coup d'œil à mon message sur la liaison d'un DataGridView, la méthode fonctionne très bien et sa très utile: meilleure approche pour lier une entité DataGridView to DataGriDView / ies P>
Pourquoi projettez-vous un autre type qui a exactement les mêmes propriétés de votre entité?
Test, j'ai essayé plusieurs idées différentes et j'ai fini avec cela. Accordé que ce n'est pas nécessaire mais je l'ai laissé.
charger code> être
charge () code>?
Oui ... mais il ne trouvait pas de charger avec ou sans eux pour que le () n'a pas d'importance si cela ne le trouve pas.