Exemplo n.º 1
0
 public override void SchemaCompleted()
 {
     toStrGetterExpression = ToStringExpressionVisitor.GetToString <T>(this.Constructor, s => s.ToString());
     toStrGetter           = toStrGetterExpression.Compile();
     if (this.subTables != null)
     {
         foreach (var item in this.subTables)
         {
             item.SchemaCompleted();
         }
     }
 }
Exemplo n.º 2
0
    public static Expression <Func <PrimaryKey, string> > GetToString <T>(CachedTableConstructor constructor, Expression <Func <T, string> > lambda)
    {
        Table table = (Table)constructor.table;

        var param = lambda.Parameters.SingleEx();

        if (param.Type != table.Type)
        {
            throw new InvalidOperationException("incorrect lambda paramer type");
        }

        var pk = Expression.Parameter(typeof(PrimaryKey), "pk");

        var root = new CachedEntityExpression(pk, typeof(T), constructor, null, null);

        var visitor = new ToStringExpressionVisitor(param, root);

        var result = visitor.Visit(lambda.Body);

        return(Expression.Lambda <Func <PrimaryKey, string> >(result, pk));
    }