2010-06-08 5 views
4

Je cherche actuellement à migrer de nHibernate fluide vers ADO.Net Entity Framework 4.
J'ai un projet contenant le modèle de domaine (pocos) que j'utilisais pour les mappages nHibernate. J'ai lu dans les blogs qu'il est possible d'utiliser mon modèle de domaine existant avec EF4 mais je n'en ai vu aucun exemple. J'ai vu des exemples de génération de code T4 avec EF4 mais je n'ai pas vu un exemple qui montre comment utiliser des objets de modèles de domaines existants avec EF4. Im un nouveau avec EF4 et aimerais voir quelques exemples sur la façon d'obtenir ceci.Entity Framework 4 avec modèle de domaine existant

Merci Aiyaz

Répondre

6

procédure pas à pas rapide:

  • Créer un modèle de données d'entité (.edmx) dans Visual Studio et désactivez la propriété "outil personnalisé" du fichier edmx pour empêcher le code génération
  • Créez les entités dans votre modèle de données d'entité avec les mêmes noms que vos classes de domaine. Les propriétés des entités devraient également avoir les mêmes noms et types que dans les classes de domaine
  • Créer une classe héritée de ObjectContext pour exposer les entités (généralement dans le même projet que le fichier .edmx)
  • Dans cette classe, créez un propriété de type ObjectSet<TEntity> pour chacune des entités vous

Exemple de code:

public class SalesContext : ObjectContext 
{ 
    public SalesContext(string connectionString, string defaultContainerName) 
     : base(connectionString, defaultContainerName) 
    { 
     this.Customers = CreateObjectSet<Customer>(); 
     this.Products = CreateObjectSet<Product>(); 
     this.Orders = CreateObjectSet<Order>(); 
     this.OrderDetails = CreateObjectSet<OrderDetail>(); 
    } 

    public ObjectSet<Customer> Customers { get; private set; } 
    public ObjectSet<Product> Products { get; private set; } 
    public ObjectSet<Order> Orders { get; private set; } 
    public ObjectSet<OrderDetail> OrderDetails { get; private set; } 
} 

C'est à ce sujet ...

Important: si vous utilisez la création automatique du proxy pour le suivi des changements (ContextOptions.ProxyCreationEnabled, ce qui est vrai par défaut), les propriétés de vos classes de domaine doit être virtuelle. Cela est nécessaire car les proxys générés par EF 4.0 les remplaceront pour implémenter le suivi des modifications.

Si vous ne souhaitez pas utiliser la création automatique de proxy, vous devrez gérer vous-même le suivi des modifications. Voir this MSDN page pour les détails

+0

Merci pour cela, je l'ai maintenant. a pris un certain temps pour passer la génération de modèle T4 cependant. – ace