C# 实体框架5-扩展DBContext类

C# 实体框架5-扩展DBContext类,c#,vb.net,entity-framework,entity-framework-5,dbcontext,C#,Vb.net,Entity Framework,Entity Framework 5,Dbcontext,我不知道我是不是做错了什么 作为一个背景,我正在开发一个实体框架(v5.0)解决方案,并希望向DBContext类添加额外的功能,因此任何tt生成的类(从DBContext继承的)都将自动具有该固有功能 根据我看到的答案,我认为这就像简单地添加一个新类一样简单,如下所示: Imports System.Data.Entity Imports System.Data.Entity.Infrastructure Partial Public Class DbContext ... add

我不知道我是不是做错了什么

作为一个背景,我正在开发一个实体框架(v5.0)解决方案,并希望向
DBContext
类添加额外的功能,因此任何tt生成的类(从DBContext继承的)都将自动具有该固有功能

根据我看到的答案,我认为这就像简单地添加一个新类一样简单,如下所示:

Imports System.Data.Entity
Imports System.Data.Entity.Infrastructure

Partial Public Class DbContext
    ... add in my methods / extra things here ...
End Class
但是,在我创建这个类的那一刻,我的整个解决方案就出现了一些错误,比如
DBContext没有实现IDisposable
,或者
sub“OnModelCreating”之类的错误不能声明为“Overrides”,因为它没有重写基类中的子类。

基本上,如果我理解了这个问题,在我创建这个类的那一刻,原始的DBContext似乎被忽略了,我的解决方案假设这是惟一的DBContext类

这会让我相信DBContext在其定义中不是一个偏类(这会否定上述答案),但我也认为我知道的太少,可能只是做了一些愚蠢的错误

任何帮助/指导都将不胜感激

另外,我知道这个示例代码是用VB.net编写的,但我同样熟悉c#/VB.net解决方案


谢谢

现在,您正在自己的程序集中创建一个名为
DbContext
的新类。
DbContext
类型的所有成员(变量、属性等)(如果未使用完全限定名)现在都将“映射”到此类型

发件人:

您可以使用Partial关键字将类或结构的定义划分到多个声明中。可以在任意多个不同的源文件中使用任意多个部分声明。但是,所有声明必须位于同一程序集和同一命名空间中

你的选择是:

1) 子类:

公共类DbContextEx
继承DbContext
末级
2) 创建扩展方法:

公共模块DbExtensions
公共函数Test1(源代码为DbContext)作为对象
端函数
公共子Test2(源代码为DbContext)
端接头
端模块

谢谢-我原以为是这样,但另一个问题让我想知道。。。那么,我猜最好的答案就是选择扩展路线(这样就不必弄乱实体框架tt生成器),因为我的目标是使其即使模型被刷新(首先是DB),一切都将继续工作,tt文件将使类继承自
DBContext
,而不是
DBContextEx
——我原以为是这样,但我对它如此陌生,我真的很感谢您的输入!!是的,我同意,扩展听起来是最好的方法。