mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-04 15:30:53 +08:00
update
39
DbContext.md
39
DbContext.md
@@ -168,8 +168,8 @@ Guid Id 的情况下,执行三次命令:前两次插入合并执行,update
|
||||
|
||||
```csharp
|
||||
fsql.SetDbContextOptions(opt => {
|
||||
opt.OnEntityChange = changeReport => {
|
||||
Console.WriteLine(changeReport);
|
||||
opt.OnEntityChange = report => {
|
||||
Console.WriteLine(report);
|
||||
};
|
||||
});
|
||||
```
|
||||
@@ -178,19 +178,42 @@ fsql.SetDbContextOptions(opt => {
|
||||
|
||||
```csharp
|
||||
var ctx = fsql.CreateDbContext();
|
||||
ctx.Options.OnEntityChange = changeReport => {
|
||||
Console.WriteLine(changeReport);
|
||||
ctx.Options.OnEntityChange = report => {
|
||||
Console.WriteLine(report);
|
||||
};
|
||||
|
||||
var uow = fsql.CreateUnitOfWork();
|
||||
uow.OnEntityChange = changeReport => {
|
||||
Console.WriteLine(changeReport);
|
||||
uow.OnEntityChange = report => {
|
||||
Console.WriteLine(report);
|
||||
};
|
||||
```
|
||||
|
||||
可实现 FreeSql.DbContext 对实体对象的添加、修改、删除的事件通知。参数 changeReport 是一个 List 集合。
|
||||
可实现 FreeSql.DbContext 对实体对象的添加、修改、删除的事件通知。参数 report 是一个 List 集合,集合元素的类型定义如下:
|
||||
|
||||
DbContext.SaveChanges,或者 Repository 对实体的 Insert/Update/Delete,或者 UnitOfWork.Commit 操作都会触发一次该事件。
|
||||
```csharp
|
||||
public class EntityChangeInfo
|
||||
{
|
||||
public object Object { get; set; }
|
||||
public EntityChangeType Type { get; set; }
|
||||
}
|
||||
public enum EntityChangeType { Insert, Update, Delete, SqlRaw }
|
||||
```
|
||||
|
||||
| 变化类型 | 说明 |
|
||||
| -- | -- |
|
||||
| Insert | 实体对象被插入 |
|
||||
| Update | 实体对象被更新 |
|
||||
| Delete | 实体对象被删除 |
|
||||
| SqlRaw | 执行了SQL语句 |
|
||||
|
||||
SqlRaw 目前有两处地方比较特殊:
|
||||
- 多对多联级更新的时候,对中间表的全部删除操作;
|
||||
- 通用仓储类 BaseRepository 有一个 Delete 方法,参数为表达式,而并非实体;
|
||||
```csharp
|
||||
int Delete(Expression<Func<TEntity, bool>> predicate);
|
||||
```
|
||||
|
||||
DbContext.SaveChanges,或者 Repository 对实体的 Insert/Update/Delete,或者 UnitOfWork.Commit 操作都会最多触发一次该事件。
|
||||
|
||||
## 参考资料
|
||||
|
||||
|
||||
@@ -149,8 +149,8 @@ using (var uow = fsql.CreateUnitOfWork()) {
|
||||
|
||||
```csharp
|
||||
fsql.SetDbContextOptions(opt => {
|
||||
opt.OnEntityChange = changeReport => {
|
||||
Console.WriteLine(changeReport);
|
||||
opt.OnEntityChange = report => {
|
||||
Console.WriteLine(report);
|
||||
};
|
||||
});
|
||||
```
|
||||
@@ -159,19 +159,42 @@ fsql.SetDbContextOptions(opt => {
|
||||
|
||||
```csharp
|
||||
var ctx = fsql.CreateDbContext();
|
||||
ctx.Options.OnEntityChange = changeReport => {
|
||||
Console.WriteLine(changeReport);
|
||||
ctx.Options.OnEntityChange = report => {
|
||||
Console.WriteLine(report);
|
||||
};
|
||||
|
||||
var uow = fsql.CreateUnitOfWork();
|
||||
uow.OnEntityChange = changeReport => {
|
||||
Console.WriteLine(changeReport);
|
||||
uow.OnEntityChange = report => {
|
||||
Console.WriteLine(report);
|
||||
};
|
||||
```
|
||||
|
||||
可实现 FreeSql.DbContext 对实体对象的添加、修改、删除的事件通知。参数 changeReport 是一个 List 集合。
|
||||
可实现 FreeSql.DbContext 对实体对象的添加、修改、删除的事件通知。参数 report 是一个 List 集合,集合元素的类型定义如下:
|
||||
|
||||
DbContext.SaveChanges,或者 Repository 对实体的 Insert/Update/Delete,或者 UnitOfWork.Commit 操作都会触发一次该事件。
|
||||
```csharp
|
||||
public class EntityChangeInfo
|
||||
{
|
||||
public object Object { get; set; }
|
||||
public EntityChangeType Type { get; set; }
|
||||
}
|
||||
public enum EntityChangeType { Insert, Update, Delete, SqlRaw }
|
||||
```
|
||||
|
||||
| 变化类型 | 说明 |
|
||||
| -- | -- |
|
||||
| Insert | 实体对象被插入 |
|
||||
| Update | 实体对象被更新 |
|
||||
| Delete | 实体对象被删除 |
|
||||
| SqlRaw | 执行了SQL语句 |
|
||||
|
||||
SqlRaw 目前有两处地方比较特殊:
|
||||
- 多对多联级更新的时候,对中间表的全部删除操作;
|
||||
- 通用仓储类 BaseRepository 有一个 Delete 方法,参数为表达式,而并非实体;
|
||||
```csharp
|
||||
int Delete(Expression<Func<TEntity, bool>> predicate);
|
||||
```
|
||||
|
||||
DbContext.SaveChanges,或者 Repository 对实体的 Insert/Update/Delete,或者 UnitOfWork.Commit 操作都会最多触发一次该事件。
|
||||
|
||||
## 参考资料
|
||||
|
||||
|
||||
Reference in New Issue
Block a user