我不知道我在这里做错了与否...

作为背景知识,我正在研究一个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/

10-13 07:56