using System;
using System.Linq;
using System.Linq.Expressions;
using Util.Datas.Sql.Builders;
using Util.Datas.Tests.Samples;
using Util.Helpers;
namespace Util.Datas.Tests.Sql.Builders.Samples {
///
/// 实体解析器
///
public class TestEntityResolver : IEntityResolver {
///
/// 获取表
///
/// 实体类型
public string GetTable( Type entity ) {
return $"t_{entity.Name}";
}
///
/// 获取架构
///
/// 实体类型
public string GetSchema( Type entity ) {
return "s";
}
///
/// 获取列名
///
/// 实体类型
/// 是否将属性名映射为列别名
public string GetColumns( bool propertyAsAlias ) {
return "*";
}
///
/// 获取列名
///
/// 实体类型
/// 列名表达式
/// 是否将属性名映射为列别名
public string GetColumns( Expression> columns, bool propertyAsAlias ) {
return Lambda.GetLastNames( columns ).Select( column => $"t_{column}" ).Join();
}
public string GetColumn( Expression> column ) {
return $"t_{Lambda.GetLastName( column )}";
}
public string GetColumn( Expression expression, Type entity, bool right ) {
return $"t_{Lambda.GetLastName( expression, right )}";
}
///
/// 获取类型
///
/// 表达式
/// 是否取右侧操作数
public Type GetType( Expression expression, bool right = false ) {
return typeof( Sample );
}
}
}