FreeSql.DbContext 添加 更新 删除 添加或更新 保存实体的指定 ManyToMany/OneToMany 导航属性(完整对比) 场景:在关闭级联保存功能之后,手工使用本方法 例子:保存商品的 OneToMany 集合属性,SaveMany(goods, "Skus") 当 goods.Skus 为空(非null)时,会删除表中已存在的所有数据 当 goods.Skus 不为空(非null)时,添加/更新后,删除表中不存在 Skus 集合属性的所有记录 实体对象 属性名 附加实体,可用于不查询就更新或删除 附加实体,并且只附加主键值,可用于不更新属性值为null或默认值的字段 实体变化记录 实体变化事件 是否开启一对多,多对多级联保存功能 【一对多】模型下, 保存时可级联保存实体的属性集合。出于使用安全考虑我们没做完整对比,只实现实体属性集合的添加或更新操作,所以不会删除实体属性集合的数据。 完整对比的功能使用起来太危险,试想下面的场景: - 保存的时候,实体的属性集合是空的,如何操作?记录全部删除? - 保存的时候,由于数据库中记录非常之多,那么只想保存子表的部分数据,或者只需要添加,如何操作? 【多对多】模型下,我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(注意不会更新) - 属性集合为空时,删除他们的所有关联数据(中间表) - 属性集合不为空时,与数据库存在的关联数据(中间表)完全对比,计算出应该删除和添加的记录 实体变化事件 动态Type,在使用 DbSet<object> 后使用本方法,指定实体类型 附加实体,可用于不查询就更新或删除 附加实体,并且只附加主键值,可用于不更新属性值为null或默认值的字段 清空状态数据 根据 lambda 条件删除数据 添加 保存实体的指定 ManyToMany/OneToMany 导航属性(完整对比) 场景:在关闭级联保存功能之后,手工使用本方法 例子:保存商品的 OneToMany 集合属性,SaveMany(goods, "Skus") 当 goods.Skus 为空(非null)时,会删除表中已存在的所有数据 当 goods.Skus 不为空(非null)时,添加/更新后,删除表中不存在 Skus 集合属性的所有记录 实体对象 属性名 更新 删除 根据 lambda 条件删除数据 添加或更新 在工作单元内创建默认仓库类,工作单元下的仓储操作具有事务特点 数据过滤 + 验证 在工作单元内创建联合主键的仓储类,工作单元下的仓储操作具有事务特点 数据过滤 + 验证 在工作单元内创建仓库类,工作单元下的仓储操作具有事务特点 数据过滤 + 验证 分表规则,参数:旧表名;返回:新表名 https://github.com/2881099/FreeSql/wiki/Repository 开启过滤器,若使用 using 则使用完后,恢复为原有状态 过滤器名称 开启所有过滤器,若使用 using 则使用完后,恢复为原有状态 禁用过滤器,若使用 using 则使用完后,恢复为原有状态 禁用所有过滤器,若使用 using 则使用完后,恢复为原有状态 动态Type,在使用 Repository<object> 后使用本方法,指定实体类型 设置 DbContext 选项 清空状态数据 附加实体,可用于不查询就更新或删除 附加实体,并且只附加主键值,可用于不更新属性值为null或默认值的字段 保存实体的指定 ManyToMany/OneToMany 导航属性(完整对比) 场景:在关闭级联保存功能之后,手工使用本方法 例子:保存商品的 OneToMany 集合属性,SaveMany(goods, "Skus") 当 goods.Skus 为空(非null)时,会删除表中已存在的所有数据 当 goods.Skus 不为空(非null)时,添加/更新后,删除表中不存在 Skus 集合属性的所有记录 实体对象 属性名 开启事务,或者返回已开启的事务 若未开启事务,则开启 是否启用工作单元 禁用工作单元 若已开启事务(已有Insert/Update/Delete操作),调用此方法将发生异常,建议在执行逻辑前调用 开启工作单元 此工作单元内的实体变化跟踪 正在使用中的工作单元(调试) 开启事务后有值,是 UnitOfWork 的唯一标识 格式:yyyyMMdd_HHmmss_种子id 例如:20191121_214504_1 创建普通数据上下文档对象 不跟踪查询的实体数据(在不需要更新其数据时使用),可提长查询性能 设置 DbContext 选项设置 返回默认仓库类 数据过滤 + 验证 返回默认仓库类,适用联合主键的仓储类 数据过滤 + 验证 返回仓库类 数据过滤 + 验证 分表规则,参数:旧表名;返回:新表名 https://github.com/2881099/FreeSql/wiki/Repository 创建基于仓储功能的工作单元,务必使用 using 包含使用