- 修复 ISelect.ToList(true) 无效的 bug;

- 增加 IAop.ConfigEntity 配置实体特性,可实现使用其他 ORM 的实体特性,#36;
This commit is contained in:
28810
2019-04-24 15:09:32 +08:00
parent b16218d779
commit e2d33e943f
10 changed files with 164 additions and 36 deletions

View File

@ -9,5 +9,7 @@ namespace FreeSql.Internal.CommonProvider {
public EventHandler<AopToListEventArgs> ToList { get; set; }
public EventHandler<AopWhereEventArgs> Where { get; set; }
public EventHandler<AopParseExpressionEventArgs> ParseExpression { get; set; }
public EventHandler<AopConfigEntityEventArgs> ConfigEntity { get; set; }
public EventHandler<AopConfigEntityPropertyEventArgs> ConfigEntityProperty { get; set; }
}
}

View File

@ -288,8 +288,10 @@ namespace FreeSql.Internal.CommonProvider {
return ret;
});
}
public List<T1> ToList(bool includeNestedMembers = false) => this.ToListPrivate(includeNestedMembers == false ? this.GetAllFieldExpressionTreeLevel2() : this.GetAllFieldExpressionTreeLevel2());
public Task<List<T1>> ToListAsync(bool includeNestedMembers = false) => this.ToListPrivateAsync(includeNestedMembers == false ? this.GetAllFieldExpressionTreeLevel2() : this.GetAllFieldExpressionTreeLevel2());
public List<T1> ToList(bool includeNestedMembers = false) =>
this.ToListPrivate(includeNestedMembers == false ? this.GetAllFieldExpressionTreeLevel2() : this.GetAllFieldExpressionTreeLevelAll());
public Task<List<T1>> ToListAsync(bool includeNestedMembers = false) =>
this.ToListPrivateAsync(includeNestedMembers == false ? this.GetAllFieldExpressionTreeLevel2() : this.GetAllFieldExpressionTreeLevelAll());
public T1 ToOne() {
this.Limit(1);
return this.ToList().FirstOrDefault();
@ -350,7 +352,7 @@ namespace FreeSql.Internal.CommonProvider {
public Func<IFreeSql, DbDataReader, T1> Read { get; set; }
}
protected GetAllFieldExpressionTreeInfo GetAllFieldExpressionTreeLevelAll() {
return _dicGetAllFieldExpressionTree.GetOrAdd(string.Join("+", _tables.Select(a => $"{_orm.Ado.DataType}-{a.Table.DbName}-{a.Alias}-{a.Type}")), s => {
return _dicGetAllFieldExpressionTree.GetOrAdd($"*{string.Join("+", _tables.Select(a => $"{_orm.Ado.DataType}-{a.Table.DbName}-{a.Alias}-{a.Type}"))}", s => {
var type = _tables.First().Table.TypeLazy ?? _tables.First().Table.Type;
var ormExp = Expression.Parameter(typeof(IFreeSql), "orm");
var rowExp = Expression.Parameter(typeof(DbDataReader), "row");