天天看點

FreeSql v0.5.x 功能介紹

弱類型

之前在操作實體時,必須傳統泛型參數,現在可以實作弱類型實體的操作。以 Repository 為例:

var repos = fsql.GetGuidRepository<object>();
repos.AsType(typeof(AddUpdateInfo));

var item = new AddUpdateInfo();
repos.Insert(item);

item.Clicks += 1;
repos.InsertOrUpdate(item);

var item2 = repos.Find(item.Id) as AddUpdateInfo;
Assert.Equal(item.Clicks, item2.Clicks);

repos.DataFilter.Apply("xxx", a => (a as AddUpdateInfo).Clicks == 11);
Assert.Null(repos.Find(item.Id));
           

然後呢,DbContext 也支援同樣的操作。

ToList & Mapper

現在支援 ToList(a => new Dto()) 這樣的簡單資料映射,然後它會依次序比對 LeftJoin/InnerJoin/RightJoin 的實體。

WhereDynamic 動态條件

支援傳入動态對象如:主鍵值 | new[]{主鍵值1,主鍵值2} | TEntity1 | new[]{TEntity1,TEntity2} | new{id=1}。

ToList(true) 貪婪加載

以前 .ToList() 會加載兩級Join對象;

現在 ISelect.ToList(includeNestedMembers: true) 貪婪加載所有 LeftJoin/InnerJoin/RightJoin 導航資料,不論對象的層級;

IAdo.Query 多個結果集

var result = fsql.Ado.Query<T1, T2>("select * from t1; select * from t2");
           

其他

v0.5.3

  • 增加 ISelect.ToList(true) 貪婪加載 LeftJoin/InnerJoin/RightJoin 導航資料;
  • 增加 IAdo.Query<T1, T2 ...> 多結果集查詢;
  • 增加 IAdo.ExecuteDataSet 多結果集查詢;
  • 優化 未設定實體屬性 set 的将被自動過濾 IsIgnore;

v0.5.2

  • 修複 SqlServer 工作單元 bug,需要同時設定 SqlCommand.Connection + Transaction;
  • 補充 測試與支援聯合主鍵的自增;

v0.5.1(五一版)

  • 增加 ISelect/IInsert/IUpdate/IDelete.AsType 實作弱類型curd,如:Select<object>().AsType(實體類型);
  • 補充 ISelect.From<T2>;
  • 補充 ExpressionTree 單元測試;
  • 優化 ToList(a => new Dto()),會按優先級查詢 Join 實體屬性;
  • 補充 IDelete/ISelect/IUpdate WhereDynamic 方法,實作 dywhere 條件;
  • 修複 WhereObject 内部方法,當開啟 Lazy 延時屬性時,并且傳遞實體查詢時條件無效;
  • 補充 實作表達式轉換類型的解析,如:Select<object>().Where(a => (a as 實體類型).Id == 0);
  • 完善 ExpressionTree 基礎資料類型 TryParse 使用與單元測試;
  • 優化 ManyToMany 中間實體未配置主鍵時,自動配置聯合主鍵;
  • 修複 Expression.And 的使用問題;
  • 修複 IsIgnore 過濾字段後,查詢的錯誤;
  • 修複 ISelect2 以上 WhereIf 條件作用反了 bug;

繼續閱讀