diff Source/Data/Linq/Builder/TableAttributeBuilder.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Source/Data/Linq/Builder/TableAttributeBuilder.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,38 @@
+using System;
+using System.Linq.Expressions;
+
+namespace BLToolkit.Data.Linq.Builder
+{
+	using BLToolkit.Linq;
+
+	class TableAttributeBuilder : MethodCallBuilder
+	{
+		protected override bool CanBuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
+		{
+			return methodCall.IsQueryable("TableName", "DatabaseName", "OwnerName");
+		}
+
+		protected override IBuildContext BuildMethodCall(ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo)
+		{
+			var sequence = builder.BuildSequence(new BuildInfo(buildInfo, methodCall.Arguments[0]));
+
+			var table = (TableBuilder.TableContext)sequence;
+			var value = (string)((ConstantExpression)methodCall.Arguments[1]).Value;
+
+			switch (methodCall.Method.Name)
+			{
+				case "TableName"    : table.SqlTable.PhysicalName = value; break;
+				case "DatabaseName" : table.SqlTable.Database     = value; break;
+				case "OwnerName"    : table.SqlTable.Owner        = value; break;
+			}
+
+			return sequence;
+		}
+
+		protected override SequenceConvertInfo Convert(
+			ExpressionBuilder builder, MethodCallExpression methodCall, BuildInfo buildInfo, ParameterExpression param)
+		{
+			return null;
+		}
+	}
+}