好的......所以我用EF4创建了我的模型。太好了!
然后我关闭了代码生成并下载了此扩展程序: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怎么样?我现在甚至需要使用它吗?
依赖注入?任何人都在意解释。
非常感谢,祝贺 萨姆
答案 0 :(得分:1)
Scott Allen撰写了一篇关于Testing Entity Framework 4的精彩文章 - 创建POCO课程是一个很好的第一步,但如果你想测试你的业务层与EF分开,你将不得不引入一个单元协调跨多个存储库的保存状态的工作,并允许DI。