Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

8 mars 2014 6 08 /03 /mars /2014 15:35

1-EntityState /Ajout d’entité au contexte
 
Exemple pour ajouter on peut :
dbTradingEntities context = new dbTradingEntities();
Article newArticle=new Article() { ArticleID = Guid.NewGuid(), ArticleName = "Superbe jeans", CategoryID = 1, CollectionID = 1, Description = "...", GenderName = "Homme", Reference = "ref 000", UnitPrice = 10.00m };

 
Soit
context.Article.Add(newArticle);
context.SaveChanges();  
Soit on définit l’entityState comme ajouté
context.Entry<Article>(newArticle).State = EntityState.Added;
context.SaveChanges();  
2- EntityState /Modification d’entité
 Article oldArticle = context.Article.Where(a=>a.ArticleID==new Guid("9E1ABF59-7E6F-42BF-8D6F-4C48E8E95863")).First<Article>();
  
oldArticle.ArticleName = "Joli jeans";
context.Article.Attach(oldArticle); // état unchanged malgré les modifications
//
context.Entry<Article>(oldArticle).State = EntityState.Modified; // change l'état et pourra être sauvé
  
context.SaveChanges();



+ marquer un élément comme à suprrimer
context.Entry<Article>(article).State = EntityState.Deleted;

 

 
3-DbEntityEntry/Obtenir les valeurs courantes,originales,l’état d’une entité ou propriété
DbEntityEntry<Article> entry = context.Entry(oldArticle);
 
entry.CurrentValues
entry.OriginalValues
entry.Entity.ArticleID
entry.State
context.Entry(oldArticle).Property(a => a.ArticleName).CurrentValue ;
context.Entry(oldArticle).Property(a => a.ArticleName).OriginalValue ;

 

var errors = context.Entry(oldArticle).Property(a => a.ArticleName).GetValidationErrors() ;

 

Savoir si une propriété a été modifiée ou la marquer comme modifiée ?
bool isModified = context.Entry(oldArticle).Property(a => a.ArticleName).IsModified;
// ou
bool isModified = context.Entry(oldArticle).Property("ArticleName").IsModified;
 
4-ObjectContext/Récupérer la clé primaire
Obtenir un objectContext
var objectContext = ((IObjectContextAdapter)context).ObjectContext;

 

EntityKey key = objectContext.ObjectStateManager.GetObjectStateEntry(entry.Entity).EntityKey;
  
MessageBox.Show("clé : " + key.EntityKeyValues[0].Key.ToString() + " ,valeur : " + key.EntityKeyValues[0].Value.ToString());

 

  
5-Récupérer les éléments « added,modified,deleted »
On ne peut récupérer les éléments ajoutés qu’avec la collection Local
foreach (Article article in context.Article)
            {
                switch (context.Entry<Article>(article).State)
                {
                    case EntityState.Modified:
                        break;
                    case EntityState.Deleted:
                        break;
 
                }
            }
            foreach (Article article in context.Article.Local)
            {
                switch (context.Entry<Article>(article).State)
                {
                    case EntityState.Added:
                        break;
                }
            }



Exemple : la méthode d’ajout, modification, suppression ne change rien (ajout local,changement de l’état,…)
Added
Article newArticle = new Article() { ArticleID = Guid.NewGuid(), ArticleName = "Test", CategoryID = 1, CollectionID = 1, Description = "...", GenderName = "Homme", Reference = "ref 000", UnitPrice = 10.00m };
//context.Article.Local.Add(newArticle);
//context.Article.Add(newArticle);
context.Entry<Article>(newArticle).State = EntityState.Added;

 

Modified

 

Article modifiedArticle = context.Article.Where(a => a.ArticleID == new Guid("7C6B7C65-79CA-473C-8243-357DF2E7A4EB")).First<Article>();

modifiedArticle.ArticleName = "nouveau nom d'article";

context.Entry<Article>(modifiedArticle).State = EntityState.Modified;



Deleted

 

Article article = context.Article.First();
//context.Article.Local.Remove(article);
context.Article.Remove(article);

 

 
6-Accès concurrentiels

 

7-SqlQuery et ExecuteSql
// requête select
var articles =context.Database.SqlQuery<string>("select [ArticleName] from [dbo].[Article]").ToList();

       

//
context.Database.ExecuteSqlCommand("DELETE FROM [dbo].[Article] where [ArticleID]='041D2ADC-61DC-487C-8E3B-62DB6BA383D0' ");

 

ressources

Partager cet article

Repost 0
Published by Romagny13 - dans Entity Framework
commenter cet article

commentaires