c# - 如何扩展 Entity Framework 6.1.3 生成的类?

标签 c# entity-framework visual-studio-2015 entity-framework-6

是否可以扩展 Entity Framework 6.1.3 生成的类?

我有一个现有的数据库,我已经为其创建了一个 ADO.NET 实体数据模型,而 Visual Studio 2015 又生成了一组类。

public partial class WebApplication1Entities : DbContext
{
    public WebApplication1Entities()
        : base("name=WebApplication1Entities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
}

我可以手动覆盖 WebApplication1Entities 以允许动态运行时连接:

    public WebApplication1Entities(string connectionString) : base(connectionString)
    {
    }

然而,这涉及到编辑 Visual Studio 2015 生成的类,但如果我希望在将来更新 ADO.NET 实体数据模型,Visual Studio 将覆盖我对之前生成的类所做的任何手动更改,并且我回到原点,必须手动编辑生成的类。

是否可以创建一个辅助类或类似的东西来扩展现有的 WebApplication1Entities : DbContext,并允许添加新的重载方法并继承 Visual Studio 2015 生成的现有方法类,例如虚拟 DbSet。

任何帮助将不胜感激:-)

最佳答案

正如你在声明中所见

public partial class WebApplication1Entities : DbContext

这个类是部分的

因此您可以创建另一个 *.cs 文件并将您的代码放在那里(使用相同的命名空间!):

public partial class WebApplication1Entities
{
     public WebApplication1Entities(string connectionString) : base(connectionString)
     {
     }        
}

因此,当设计人员覆盖包含“原始”类的文件时,您的代码保持不变。

More关于部分类和方法。

关于c# - 如何扩展 Entity Framework 6.1.3 生成的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42160958/

相关文章:

entity-framework - DbSet.Remove 和 DbContext.Entry(entity).State = EntityState.Deleted 之间的区别

npm - VS2015 的开发人员命令提示符中未将“npm”识别为内部或外部命令错误

c# - 寻找一种数据包描述语言(最好使用C#实现)

c# - 在 Entity Framework 中插入的最快方法

c# - 读取Excel文件

c# - 在具有服务层的多层架构中,一个服务调用另一个服务是否可以接受?

deployment - 如何分发 UWP Enterprise 应用程序

.net - 什么是 csproj 文件中的 <MvcProjectUpgradeChecked> 元素

c# - 在 DataGridView 中拖放多列

c# - 实时监控网络状态。引发了哪些事件?