convertir ou lancer une liste à EntityCollection

c# collections entity-framework

Question

Comment convertir ou convertir une List<T> en EntityCollection<T> ?

Parfois, cela se produit lorsque vous essayez de créer «à partir de zéro» une collection d'objets enfants (par exemple à partir d'un formulaire Web).

 Cannot implicitly convert type 
'System.Collections.Generic.List' to 
'System.Data.Objects.DataClasses.EntityCollection'

Réponse acceptée

Je suppose que vous parlez de List<T> et de EntityCollection<T> utilisés par Entity Framework. Ce dernier ayant un objectif complètement différent (responsable du suivi des modifications) et n'héritant pas de la List<T> , il n'y a pas de diffusion directe.

Vous pouvez créer un nouveau EntityCollection<T> et ajouter tous les membres de la liste.

var entityCollection = new EntityCollection<TEntity>();
foreach (var item m in list)
{
  entityCollection.Add(m);
}

Malheureusement, EntityCollection<T> ne prend pas en charge une opération Assign, contrairement à EntitySet utilisé par Linq2Sql, ni à un constructeur surchargé;


Réponse populaire

En une ligne:

list.ForEach(entityCollection.Add);

Méthode d'extension:

public static EntityCollection<T> ToEntityCollection<T>(this List<T> list) where T : class
{
    EntityCollection<T> entityCollection = new EntityCollection<T>();
    list.ForEach(entityCollection.Add);
    return entityCollection;
}

Utilisation:

EntityCollection<ClassName> entityCollection = list.ToEntityCollection();


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow