如何在数据库优先实体框架中更新模型时防止DbContext中的代码删除

开发商DJ

我首先使用数据库,DbContext并在DbContext类中添加了一些与审计相关的代码,但是当我更新模型时,它删除了我在DbContext类中编写的代码请告诉我即使在模型更新后也如何保留此代码。

这是我的代码,并添加了注释,这些注释将在模型更新后删除:

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

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

    public virtual DbSet<AspNotification> AspNotifications { get; set; }
    public virtual DbSet<ASPAudit> ASPAudit { get; set; }

    // this code is removed whenever I update model
    public override int SaveChanges()
    {
         var addedEntries = ChangeTracker.Entries().Where(e => e.State == EntityState.Added).ToList();
         
        int changes = base.SaveChanges();

        foreach (var entry in addedEntries)
        {
           ...some code
        }

        base.SaveChanges();

        return changes;
    }
}

如果有人指导我会很棒

如果您查看该生成类的顶部,您将看到:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

这意味着该类将在每次更新时自动生成。

EF生成的类为partial,您可以创建扩展/更改并将其添加到partial该类的另一半(例如MyDbContextPartial.cs)。

// file MyDbContextPartial.cs
public partial class MyDbContext
{
    public override int SaveChanges()
    {
         var addedEntries = ChangeTracker.Entries().Where(e => e.State == EntityState.Added).ToList();
         
        int changes = base.SaveChanges();
        foreach (var entry in addedEntries)
        {
           ...some code
        }

        base.SaveChanges();
        return changes;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在数据库优先方法中更新模型实体框架时遇到问题

来自分类Dev

使用实体框架时如何在模型中写入属性数据库优先

来自分类Dev

使用实体框架时如何在模型中写入属性数据库优先

来自分类Dev

创建使用数据库优先模型后,如何在实体框架中设置由数据库在数据库中生成的ID密钥

来自分类Dev

Web ApI实体框架(代码优先)值未出现在数据库中

来自分类Dev

实体框架使用数据库或代码优先模型中不存在的列生成sql

来自分类Dev

MySql数据库中的实体框架代码优先迁移

来自分类Dev

如何从实体框架中的数据库多对多映射解决代码优先?

来自分类Dev

实体framewrok如何在数据库优先方法中确定主键

来自分类Dev

实体framewrok如何在数据库优先方法中确定主键

来自分类Dev

如何通过实体框架在数据库中插入更新多个数据

来自分类Dev

在代码优先现有数据库中的实体框架中以多对多关系更新数据

来自分类Dev

在代码优先现有数据库中的实体框架中以多对多关系更新数据

来自分类Dev

如何在数据库优先和身份列中使用实体框架

来自分类Dev

如何使用Entity Framework代码优先从数据库中删除所有相关实体

来自分类Dev

实体框架6数据库优先方法中DbContext对象之间的共享连接

来自分类Dev

实体框架6数据库优先方法中的DbContext对象之间共享连接

来自分类Dev

使用实体框架的最佳方法(数据库优先,模型优先,代码优先)

来自分类Dev

是否可以将数据库优先模型和代码优先模型与实体框架混合使用?

来自分类Dev

如何在实体框架(数据库优先)生成的模型中使属性只读?

来自分类Dev

如何更新实体框架7迁移和数据库-代码优先

来自分类Dev

如何在实体框架中从模型优先更改为代码优先

来自分类Dev

实体框架代码优先中的数据库初始化

来自分类Dev

使用实体框架创建其他类(数据库中的代码优先)

来自分类Dev

实体框架。多个DbContext多个数据库。MySQL的。代码优先

来自分类Dev

当实体框架模型在专用的类库中时,如何在C#应用程序中定义连接字符串和数据库提供程序?

来自分类Dev

实体框架代码优先(新数据库)产生错误-“数据库'master'中的CREATE DATABASE权限被拒绝。”

来自分类Dev

如何从ASP.NET Core中的实体框架中的数据库更新VS 2019中的模型

来自分类Dev

在并发数据库更新时锁定实体框架代码

Related 相关文章

  1. 1

    在数据库优先方法中更新模型实体框架时遇到问题

  2. 2

    使用实体框架时如何在模型中写入属性数据库优先

  3. 3

    使用实体框架时如何在模型中写入属性数据库优先

  4. 4

    创建使用数据库优先模型后,如何在实体框架中设置由数据库在数据库中生成的ID密钥

  5. 5

    Web ApI实体框架(代码优先)值未出现在数据库中

  6. 6

    实体框架使用数据库或代码优先模型中不存在的列生成sql

  7. 7

    MySql数据库中的实体框架代码优先迁移

  8. 8

    如何从实体框架中的数据库多对多映射解决代码优先?

  9. 9

    实体framewrok如何在数据库优先方法中确定主键

  10. 10

    实体framewrok如何在数据库优先方法中确定主键

  11. 11

    如何通过实体框架在数据库中插入更新多个数据

  12. 12

    在代码优先现有数据库中的实体框架中以多对多关系更新数据

  13. 13

    在代码优先现有数据库中的实体框架中以多对多关系更新数据

  14. 14

    如何在数据库优先和身份列中使用实体框架

  15. 15

    如何使用Entity Framework代码优先从数据库中删除所有相关实体

  16. 16

    实体框架6数据库优先方法中DbContext对象之间的共享连接

  17. 17

    实体框架6数据库优先方法中的DbContext对象之间共享连接

  18. 18

    使用实体框架的最佳方法(数据库优先,模型优先,代码优先)

  19. 19

    是否可以将数据库优先模型和代码优先模型与实体框架混合使用?

  20. 20

    如何在实体框架(数据库优先)生成的模型中使属性只读?

  21. 21

    如何更新实体框架7迁移和数据库-代码优先

  22. 22

    如何在实体框架中从模型优先更改为代码优先

  23. 23

    实体框架代码优先中的数据库初始化

  24. 24

    使用实体框架创建其他类(数据库中的代码优先)

  25. 25

    实体框架。多个DbContext多个数据库。MySQL的。代码优先

  26. 26

    当实体框架模型在专用的类库中时,如何在C#应用程序中定义连接字符串和数据库提供程序?

  27. 27

    实体框架代码优先(新数据库)产生错误-“数据库'master'中的CREATE DATABASE权限被拒绝。”

  28. 28

    如何从ASP.NET Core中的实体框架中的数据库更新VS 2019中的模型

  29. 29

    在并发数据库更新时锁定实体框架代码

热门标签

归档