本文整理汇总了C#中MappingSchema.GetConvertExpression方法的典型用法代码示例。如果您正苦于以下问题:C# MappingSchema.GetConvertExpression方法的具体用法?C# MappingSchema.GetConvertExpression怎么用?C# MappingSchema.GetConvertExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MappingSchema
的用法示例。
在下文中一共展示了MappingSchema.GetConvertExpression方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetColumnReader
static Expression GetColumnReader(
IDataContext dataContext, MappingSchema mappingSchema, IDataReader dataReader, Type type, int idx, Expression dataReaderExpr)
{
var ex = dataContext.GetReaderExpression(mappingSchema, dataReader, idx, dataReaderExpr, type.ToNullableUnderlying());
if (ex.NodeType == ExpressionType.Lambda)
{
var l = (LambdaExpression)ex;
switch (l.Parameters.Count)
{
case 1 : ex = l.GetBody(dataReaderExpr); break;
case 2 : ex = l.GetBody(dataReaderExpr, Constant(idx)); break;
}
}
var conv = mappingSchema.GetConvertExpression(ex.Type, type, false);
// Replace multiple parameters with single variable or single parameter with the reader expression.
//
if (conv.Body.GetCount(e => e == conv.Parameters[0]) > 1)
{
var variable = Variable(ex.Type);
var assign = Assign(variable, ex);
ex = Block(new[] { variable }, new[] { assign, conv.GetBody(variable) });
}
else
{
ex = conv.GetBody(ex);
}
// Add check null expression.
//
if (dataContext.IsDBNullAllowed(dataReader, idx) ?? true)
{
ex = Condition(
Call(dataReaderExpr, _isDBNullInfo, Constant(idx)),
Constant(mappingSchema.GetDefaultValue(type), type),
ex);
}
return ex;
}
示例2: GetConverter
static Tuple<Expression,bool> GetConverter(MappingSchema mappingSchema, Expression expr, Type from, Type to)
{
if (from == to)
return Tuple.Create(expr, false);
var le = Converter.GetConverter(from, to);
if (le != null)
return Tuple.Create(le.GetBody(expr), false);
var lex = mappingSchema.TryGetConvertExpression(from, to);
if (lex != null)
return Tuple.Create(lex.GetBody(expr), true);
var cex = mappingSchema.GetConvertExpression(from, to, false, false);
if (cex != null)
return Tuple.Create(cex.GetBody(expr), true);
var ex =
GetFromEnum (from, to, expr, mappingSchema) ??
GetToEnum (from, to, expr, mappingSchema);
if (ex != null)
return Tuple.Create(ex, true);
ex =
GetConvertion(from, to, expr) ??
GetCtor (from, to, expr) ??
GetValue (from, to, expr) ??
GetOperator (from, to, expr) ??
GetParse (from, to, expr) ??
GetToString (from, to, expr) ??
GetParseEnum (from, to, expr);
return ex != null ? Tuple.Create(ex, false) : null;
}