mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-04 23:40:53 +08:00
update
39
DbContext.md
39
DbContext.md
@@ -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 操作都会最多触发一次该事件。
|
||||||
|
|
||||||
## 参考资料
|
## 参考资料
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user