欢迎来到《FreeSql.Repository 仓储模式》系列文档,本系列文档专注介绍 【仓储+工作单元】 的使用方式。完整文档请前往 wiki 中心:https://github.com/dotnetcore/FreeSql/wiki
我们使用仓储都是用传入泛型处理的,如果不知道实体类型怎么使用?FreeSql.Repository 支持动态实体类型的操作。
var repo = fsql.GetRepository<object>(); //注意是 object
repo.AsType(typeof(Topic)); //动态类型
repo.Insert(new Topic());
class Topic
{
[Column(IsIdentity = true)]
public int id { get; set; }
public int typeid { get; set; }
}
只需要将泛型传入 object,再使用 AsType 设置真实的实体类型,它可以是反射得到的目标实体类型。
最终完成对【动态实体类型】的 CRUD 操作。
提示:关于查询,ISelect 提供了 WhereDynamicFilter/OrderByPropertyName 等方法实现动态查询
如果实体类不确定,fsql.Select<object>().AsType(反射的实体类型).ToList();
如果实体类确定,表名不确定,fsql.Select<T>().AsTable((type, old) => 返回真实表名). ToList();
系列文章导航
- (一)什么是仓储
- (二)如何使用仓储
- (三)实体特性
- (四)工作单元
- (五)状态管理
- (六)导航属性
- (七)多表查询
- (八)级联加载
- (九)级联保存
- (十)动态实体类型
- (十一)分表
- (十二)如何扩展