弱類型
之前在操作實體時,必須傳統泛型參數,現在可以實作弱類型實體的操作。以 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;