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 01:37

 

 

Exemple nous avons :

  •         une entité Article 
  •          un model ArticleModel     

On crée deux méthodes d’extension pour le mapping

 

public static class ArticleMapper

    {

        public static ArticleModel ToModel(this Article entity)

        {

            ArticleModel model = new ArticleModel()

            {

                ArticleID = entity.ArticleID,

                Reference=entity.Reference,

                ArticleName = entity.ArticleName,

                Description = entity.Description,

                GenderName = entity.GenderName,

 

            };

 

            return model;

        }

 

        public static Article ToEntity(this ArticleModel model)

        {

            Article entity = new Article()

            {

                ArticleID = model.ArticleID,

                Reference = model.Reference,

                ArticleName = model.ArticleName,

                Description = model.Description,

                GenderName = model.GenderName

            };

 

 

            return entity;

        }

    }

 

 

public interface IServiceBase<TModelBase,TEntity>

    {

        List<TModelBase> GetAll();

        TModelBase Add(TModelBase entity);

        TModelBase Update(TModelBase entity);

        TModelBase Remove(TModelBase entity);

        int SaveAll();

    }

public class ArticleEDMService : IServiceBase<ArticleModel, Article>

    {

        private dbTradingEntities db = new dbTradingEntities();

 

        public List<ArticleModel> GetAll()

        {

            // renvoie toutes les photos

            //var photos = db.Articles.Where(a => a.Photo.Any()).ToList();

 

            foreach (Article entity in db.Article)

            {

                // filtre

                entity.Photo = db.Photo.Where(photo => photo.Article.Any(article => article.ArticleID == entity.ArticleID)).ToList();

 

                entity.ArticleSizes = db.ArticleSizes.Where(articleSize => articleSize.Article.ArticleID == entity.ArticleID).ToList();

            }

 

            return MapToModel(db.Article);

        }

        protected virtual List<ArticleModel> MapToModel(DbSet<Article> articles)

        {

            List<ArticleModel> result = new List<ArticleModel>();

 

            foreach (Article article in articles)

                result.Add(article.ToModel());

 

            return result;

        }

        // ......

}

 

  Include
 Exemple chargement des photos de l’article
 

var articles = context.Article.Include(a=>a.Photo).ToList();

 

Chargement explicite
context.Entry(oldArticleClone).Collection(a=>a .Photo).Load();
   
       

On peut remarquer que les data annotations + IDataErrorInfo marchent en windows form    

Il est intéressant également de voir que le binding se fait bien avec une liste ou une bindinglist et on peut sauver les changements facilement .Ce qui n’est pas le cas si on utilise le mapping qui demande un peu plus de code et de gérer l’objectContext

     

Partager cet article

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

commentaires