我正在尝试使用Entity Framework覆盖SaveChanges DbContect。
覆盖int SaveChanges()
没有运行且断点没有被击中。
我已将该类移至EDMX文件所在的根目录但仍然没有帮助。
如何让 SaveChanges覆盖起作用?
using System;
using System.Data.Entity;
namespace DAL
{
public class MyEntities : DbContext
{
public override int SaveChanges()
{
throw new Exception("override DbContext>SaveChanges working");
// return base.SaveChanges();
}
}
}
调用SaveChanges的代码
using (var ctx = new Entities())
{
// model.clientID = data.clientID;
// model.clientGUID = data.clientGUID;
model.clientName = data.clientName;
model.clientDept = data.clientDept;
model.clientWebsite = data.clientWebsite;
model.clientEmail = data.clientEmail;
model.isActive = data.isActive;
model.clientModDate = data.clientModDate;
model.clientCreatedDate = data.clientCreatedDate;
ctx.Clients.Add(model);
ctx.SaveChanges();
}
答案 0 :(得分:0)
最简单的方法:EF类定义为" partial"。因此,添加另一个类名为:
的类文件public partial class MyEntities
{
public void SavingChanges()
{
//Do custom code
this.SaveChanges();
}
}
并将所有SaveChanges()
次来电更改为SavingChanges()
。然后,您可以根据需要自定义流程。关键是添加另一个部分类,以确保EF上下文具有部分定义(不在您的代码示例中,但是默认实现)。
答案 1 :(得分:0)
我能够使用提供的评论让代码正常工作。
现在都在工作!
https://exceptionnotfound.net/entity-change-tracking-using-dbcontext-in-entity-framework-6/
<table style="border: 1px solid">
<thead style="border: 1px solid">
<th>
Value 1
</th>
<th>
Value 2
</th>
<th>
Sum
</th>
</thead>
<tr>
<td id="r1c1">
<input style="width:50px" />
</td>
<td id="r1c2">
<input style="width:50px" />
</td>
<td id="r1c3">
<span id="r1Sum">0</span>
</td>
</tr>
<tr>
<td id="r2c1">
<input style="width:50px"/>
</td>
<td id="r2c2">
<input style="width:50px"/>
</td>
<td id="r2c3">
<span id="r2Sum">0</span>
</td>
</tr>
</table>
Value 1 column total: <span id="val1ColTotal">0</span>
Value 2 column total: <span id="val2ColTotal">0</span>
Sum column total: <span id="sumColTotal">0</span>