2011-02-18 4 views
1

Ok ... J'ai donc créé mon modèle en utilisant EF4. Génial! J'ai ensuite désactivé la génération de code et téléchargé cette extension: http://visualstudiogallery.msdn.microsoft.com/23df0450-5677-4926-96cc-173d02752313 (Générateur d'entité POCO). Impressionnant!Entity Framework 4 POCO Generation

Rantez-le, et il génère toutes mes classes. Est-ce tout ce que j'ai à faire? Cela semble fonctionner, mes dépôts arrivent aux objets et persistent à la DB.

Veuillez jeter un coup d'œil au code suivant et faites-moi savoir si je suis sur la bonne voie.

** Exemple de code **

Controller:

Namespace Controllers 
    Public Class HomeController 
     Inherits System.Web.Mvc.Controller 

     Function Index() As ActionResult 
      Return View(New Models.HomeModel) 
     End Function 

    End Class 
End Namespace 

Modèle:

Namespace Models 
    Public Class HomeModel 

     Private _Repository As Titan.Business.Repositories.ICustomerRepository 
     Private _SalesRepRepo As Titan.Business.Repositories.ISalesRepresentativeRepository 

     Public Property Customers As IEnumerable(Of Titan.Business.Customer) 
     Public Property SalesReps As IEnumerable(Of Titan.Business.SalesRepresentative) 

     Public Sub New() 
      _Repository = New Titan.Business.Repositories.CustomerRepository 
      _SalesRepRepo = New Titan.Business.Repositories.SalesRepresentativeRepository 

      _Customers = _Repository.Query(Function(x) x.LastName.StartsWith("Str")) 
      _SalesReps = _SalesRepRepo.Query(Function(x) x.LastName.StartsWith("Str")) 

     End Sub 

    End Class 
End Namespace 

Repository et Interfaces:

Namespace Repositories 
    Public Interface IRepository(Of T) 
     Function Query(ByVal Predicate As System.Linq.Expressions.Expression(Of Func(Of T, Boolean))) As IEnumerable(Of T) 
     Function GetByID(ByVal ID As Integer) As T 
     Sub Add(ByVal Entity As T) 
     Sub Delete(ByVal Entity As T) 
     Sub Save(ByVal Entity As T) 

    End Interface 

    Public Interface ICustomerRepository 
     Inherits IRepository(Of Customer) 

    End Interface 

    Public Interface ISalesRepresentativeRepository 
     Inherits IRepository(Of SalesRepresentative) 

    End Interface 

End Namespace 

Namespace Repositories 
    Public Class SalesRepresentativeRepository 
     Implements ISalesRepresentativeRepository 

     Public Sub Add(ByVal Entity As SalesRepresentative) Implements IRepository(Of SalesRepresentative).Add 

     End Sub 

     Public Sub Delete(ByVal Entity As SalesRepresentative) Implements IRepository(Of SalesRepresentative).Delete 

     End Sub 

     Public Function GetByID(ByVal ID As Integer) As SalesRepresentative Implements IRepository(Of SalesRepresentative).GetByID 

     End Function 

     Public Function Query(ByVal Predicate As System.Linq.Expressions.Expression(Of System.Func(Of SalesRepresentative, Boolean))) As System.Collections.Generic.IEnumerable(Of SalesRepresentative) Implements IRepository(Of SalesRepresentative).Query 
      Using db As New GTGContainer 
       Return db.SalesRepresentatives.Where(Predicate).ToList 
      End Using 
     End Function 

     Public Sub Save(ByVal Entity As SalesRepresentative) Implements IRepository(Of SalesRepresentative).Save 

     End Sub 
    End Class 
End Namespace 

Toute suggestion serait si utile moi.

Où se situe la couche de service?

Qu'en est-il de l'AutoMapper? Dois-je même besoin de l'utiliser maintenant?

Injection de dépendance? Quelqu'un veut-il expliquer?

Merci un bouquet,
Sam

Répondre

1

Il y a un grand article de Scott Allen à propos Testing Entity Framework 4 - la création de classes POCO est une bonne première étape, mais si vous voulez tester vous couche d'affaires distincte de EF vous aurez introduire une unité de travail qui coordonne l'état d'enregistrement entre plusieurs référentiels et permet la DI.

+0

@Sam: Injection de dépendances – BrokenGlass

+0

@Sam - c'est l'injection de dépendances – zihotki

+0

Des bonnes lectures sur l'injection de dépendances? C'est quoi exactement? Et pourquoi l'utilisez-vous? – Sam