update

28810
2019-10-12 00:50:15 +08:00
parent 140925e121
commit 8e5e316144
2 changed files with 62 additions and 16 deletions

@@ -168,8 +168,8 @@ Guid Id 的情况下执行三次命令前两次插入合并执行update
```csharp ```csharp
fsql.SetDbContextOptions(opt => { fsql.SetDbContextOptions(opt => {
opt.OnEntityChange = changeReport => { opt.OnEntityChange = report => {
Console.WriteLine(changeReport); Console.WriteLine(report);
}; };
}); });
``` ```
@@ -178,19 +178,42 @@ fsql.SetDbContextOptions(opt => {
```csharp ```csharp
var ctx = fsql.CreateDbContext(); var ctx = fsql.CreateDbContext();
ctx.Options.OnEntityChange = changeReport => { ctx.Options.OnEntityChange = report => {
Console.WriteLine(changeReport); Console.WriteLine(report);
}; };
var uow = fsql.CreateUnitOfWork(); var uow = fsql.CreateUnitOfWork();
uow.OnEntityChange = changeReport => { uow.OnEntityChange = report => {
Console.WriteLine(changeReport); 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 ```csharp
fsql.SetDbContextOptions(opt => { fsql.SetDbContextOptions(opt => {
opt.OnEntityChange = changeReport => { opt.OnEntityChange = report => {
Console.WriteLine(changeReport); Console.WriteLine(report);
}; };
}); });
``` ```
@@ -159,19 +159,42 @@ fsql.SetDbContextOptions(opt => {
```csharp ```csharp
var ctx = fsql.CreateDbContext(); var ctx = fsql.CreateDbContext();
ctx.Options.OnEntityChange = changeReport => { ctx.Options.OnEntityChange = report => {
Console.WriteLine(changeReport); Console.WriteLine(report);
}; };
var uow = fsql.CreateUnitOfWork(); var uow = fsql.CreateUnitOfWork();
uow.OnEntityChange = changeReport => { uow.OnEntityChange = report => {
Console.WriteLine(changeReport); 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 操作都会最多触发一次该事件。
## 参考资料 ## 参考资料