天天看點

FreeSql.Repository (十)動态實體類型

歡迎來到《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();

系列文章導航

  • (一)什麼是倉儲
  • (二)如何使用倉儲
  • (三)實體特性
  • (四)工作單元
  • (五)狀态管理
  • (六)導航屬性
  • (七)多表查詢
  • (八)級聯加載
  • (九)級聯儲存
  • (十)動态實體類型
  • (十一)分表
  • (十二)如何擴充

繼續閱讀