c# - Entity Framework 5 - 扩展 DBContext 类

标签 c# vb.net entity-framework entity-framework-5 dbcontext

我不知道我是否在这里做错了什么......

作为一点背景知识,我正在开发 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 notimplement IDisposable等相关的错误,或者诸如sub'OnModelCreating'cannot beelated'之类的错误。覆盖”,因为它不会覆盖基类中的子类。

基本上,如果我理解这个问题,那么当我创建它时,原始的 DBContext 似乎被忽略,并且我的解决方案假设这是唯一 DBContext 类。

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

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

此外,我知道此示例代码是用 VB.net 编写的,但我同样对 C#/VB.net 解决方案感到满意。

谢谢!!

最佳答案

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

来自MSDN :

You can divide the definition of a class or structure among several declarations by using the Partial keyword. You can use as many partial declarations as you want, in as many different source files as you want. However, all the declarations must be in the same assembly and the same namespace.

您的选择是:

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/

相关文章:

c# - Entity Framework 的 Repository + UnitOfWork 模式

c# - 如何编辑在 IdentityDbContext 中创建的表

asp.net - 单击按钮时动态添加新文本框

VB.Net 在并行 ForEach 中使用 XmlNodeList

c# - 在这个例子中可以消除类型参数的重复吗?

c# - 选择语句执行 "for each"操作,然后返回自身

mysql - 使用 USB 调制解调器通过 AT 命令发送批量消息。

c# - 如何在选择的主条目发生变化时刷新明细?

c# - 如何设置ID对应 Entity Framework 中的对象

c# - 为什么 ASP.NET 编译器会在每次构建时重建所有二进制文件?