2011-02-18 243 views
1

好吧...所以我用EF4创建了我的模型。大!实体框架4 POCO代

然后我关闭了代码生成并下载了这个扩展:http://visualstudiogallery.msdn.microsoft.com/23df0450-5677-4926-96cc-173d02752313 (POCO实体生成器)。真棒!

冉它,它会生成我所有的类。这就是我所要做的吗?它似乎工作,我的知识库到达对象并坚持到数据库。

请看下面的代码,让我知道我是否在正确的轨道上。

**示例代码**

控制器:

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 

型号:

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 

库和接口:

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 

任何建议将是如此有帮助的我。

服务层适合哪里?

那么AutoMapper呢?我现在甚至需要使用它吗?

依赖注入?任何人都在意解释。

多谢,
山姆

回答

1

还有斯科特 - 阿伦一大篇关于Testing Entity Framework 4 - 创建POCO类是一个良好的开端,但如果你想测试你的业务层由EF分开,你将有介绍一个工作单位,协调跨多个存储库的保存状态并允许DI。

+0

@Sam:依赖注入 – BrokenGlass 2011-02-18 23:01:35