在Visual Basic.NET中伪造EF DBContext

时间:2014-02-12 12:37:56

标签: vb.net entity-framework

我找到了在C#中伪造DBContext的解决方案。创建接口IDbContext。对于生产代码,我创建一个继承自DbContext并实现IDbContext的LifeDbContext。对于单元测试,我创建了一个类FakeDbContext,它也实现了IDbContext并伪造了带有集合的Datebase ......很好。

但现在我必须使用Visual Basic.NET。因为我必须隐式实现接口IDbContext的每个成员,所以我无法实现DbContext基类的成员。 在c#中,不需要显式实现接口的成员。

有什么想法吗?

这是我的代码:

Public Interface IMyDbContext
  Property Orders As IDbSet(Of Oders)
  ...

  ReadOnly Property Database() As Database
  Function SaveChanges() As Integer
  ReadOnly Property Configuration As Infrastructure.DbContextConfiguration
End Interface


Public Class MyDbContext
  Inherits DbContext
  Implements IDbContext

  Public Property Orders As IDbSet(Of Orders) Implements IMyDbContext.Oders
  ...

  Public ReadOnly Property Database() As Database Implements ILimsDbContext.Database
    Get
        Return MyBase.Database
    End Get
  End Property

  Public Function SaveChanges() As Integer Implements IMyDbContext.SaveChanges
      Return MyBase.SaveChanges()
  End Function

  Public ReadOnly Property Configuration() As Infrastructure.DbContextConfiguration Implements IMyDbContext.Configuration
    Get
        Return MyBase.Configuration
    End Get
  End Property
End Class

我不喜欢的是在MyDbContext中已经在DbContext实现成员中的阴影只是为了显式实现接口。

1 个答案:

答案 0 :(得分:0)

您可以修改t4模板以添加接口和实现子句,但这会将您锁定到自定义的t4实现中。我在一篇关于添加属性记录的帖子中沿着这些方向做了一些事情。查看this post是否有用。