Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在另一个分部类中重写DbContext方法以避免context.cs中自动生成的代码丢失_Asp.net Mvc_Entity Framework_Dbcontext_Savechanges_Auditing - Fatal编程技术网

Asp.net mvc 如何在另一个分部类中重写DbContext方法以避免context.cs中自动生成的代码丢失

Asp.net mvc 如何在另一个分部类中重写DbContext方法以避免context.cs中自动生成的代码丢失,asp.net-mvc,entity-framework,dbcontext,savechanges,auditing,Asp.net Mvc,Entity Framework,Dbcontext,Savechanges,Auditing,我正在尝试从DbContext重写SaveChanges()方法以进行审核。在我的应用程序中,当我在继承DbContext的某些部分类MyEntities下重写它时,它可以正常工作,没有任何问题。此外,MyEntities类包含连接各种数据库表的少数数据库集 但一旦实体框架被更新,Context.cs文件就会在自动生成时得到更新,因此我丢失了代码 有没有办法将这个overidden函数保存在同一名称空间内外的其他类文件中?我试图创建另一个类文件,并保留自定义代码以覆盖SaveChanges()并

我正在尝试从DbContext重写SaveChanges()方法以进行审核。在我的应用程序中,当我在继承DbContext的某些部分类MyEntities下重写它时,它可以正常工作,没有任何问题。此外,MyEntities类包含连接各种数据库表的少数数据库集

但一旦实体框架被更新,Context.cs文件就会在自动生成时得到更新,因此我丢失了代码

有没有办法将这个overidden函数保存在同一名称空间内外的其他类文件中?我试图创建另一个类文件,并保留自定义代码以覆盖SaveChanges()并在DbSet上执行操作,但没有调用此方法,并且执行了base SaveChanges()

我很感激任何克服这一问题的建议。如果需要什么,请告诉我

谢谢,
Pankaj

你显然在问题标题中提到了部分类,为什么不使用它?创建一个单独的文件,在其中定义dbcontext的分部类,然后可以安全地重写那里的
SaveChanges
方法。@KingKing:我创建了saperate文件,实现了分部类,并且重写了SaveChanges()。但当我像newClass:DbContext一样继承时,我没有访问DbSet的权限,这是为了保存而添加object所必需的。当我像newClass:MyEntities一样继承时,我没有收到任何编译错误或警告,生成成功但仍然被重写的方法没有被调用,应用程序只执行基方法。那么,分部类不应该有任何继承指令。这已经在自动生成的类中完成。删除
:DbContext
就可以了。是的。我会做出改变。谢谢国王。:)它起作用了。。现在我遇到了另一个问题。对于ObjectStateEntry,我无法检索MODIFIED的原始值,因为它们仍然仅检索CurrentValue。有人有什么解决方案/建议吗?