我不知道我在这里做错了与否...
作为背景知识,我正在研究一个Entity Framework(v5.0)解决方案,并希望为DBContext
类添加额外的功能,因此任何tt生成的类(从DbContext继承)都将具有该固有功能。自动提供给他们。
根据我看到的here答案,我认为这很简单,只需添加一个新类,如下所示:
Imports System.Data.Entity
Imports System.Data.Entity.Infrastructure
Partial Public Class DbContext
... add in my methods / extra things here ...
End Class
但是,当我创建此类时,我的整个解决方案都会出现诸如
DBContext not implementing IDisposable
之类的错误或诸如sub 'OnModelCreating' cannot be declared 'Overrides' because it does not override a sub in a base class.
之类的错误。基本上,如果我了解此问题,那么在我创建该问题的那一刻,原始的DBContext似乎会被忽略,而我的解决方案假定这是唯一的DBContext类。
那会让我相信DBContext在其定义中不是局部类(这将否定上述答案),但是我还认为我了解得太少了,可能只是在做一些愚蠢的错误。
任何帮助/指导将不胜感激!
另外,我知道此示例代码是用VB.net编写的,但我同样满意c#/ VB.net解决方案。
谢谢!!
最佳答案
照原样,您正在自己的程序集中创建一个名为DbContext
的新类。现在,所有类型为DbContext
(如果您未使用全限定名)的成员(变量,属性等)都将被“映射”为该类型。
从MSDN:
您可以使用Partial关键字在多个声明之间划分类或结构的定义。您可以根据需要在任意数量的不同源文件中使用任意数量的部分声明。但是,所有声明必须位于相同的程序集和相同的名称空间中。
您的选择是:
1)子类:
Public Class DbContextEx
Inherits DbContext
End Class
2)创建扩展方法:
Public Module DbExtensions
<Runtime.CompilerServices.Extension()>
Public Function Test1(source As DbContext) As Object
End Function
<Runtime.CompilerServices.Extension()>
Public Sub Test2(source As DbContext)
End Sub
End Module
关于c# - Entity Framework 5-扩展DBContext类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26182012/