| 
0
 | 
     1 using System;
 | 
| 
 | 
     2 using System.Linq;
 | 
| 
 | 
     3 using System.Linq.Expressions;
 | 
| 
 | 
     4 using System.Reflection;
 | 
| 
 | 
     5 using System.Text;
 | 
| 
 | 
     6 
 | 
| 
 | 
     7 using BLToolkit.Data;
 | 
| 
 | 
     8 using BLToolkit.Data.DataProvider;
 | 
| 
 | 
     9 using BLToolkit.Data.Linq;
 | 
| 
 | 
    10 using BLToolkit.Data.Sql;
 | 
| 
 | 
    11 
 | 
| 
 | 
    12 namespace Data.Linq
 | 
| 
 | 
    13 {
 | 
| 
 | 
    14 	using Model;
 | 
| 
 | 
    15 
 | 
| 
 | 
    16 	public class TestDbManager : DbManager, ITestDataContext
 | 
| 
 | 
    17 	{
 | 
| 
 | 
    18 		public TestDbManager(string configString)
 | 
| 
 | 
    19 			: base(configString)
 | 
| 
 | 
    20 		{
 | 
| 
 | 
    21 		}
 | 
| 
 | 
    22 
 | 
| 
 | 
    23 		public TestDbManager()
 | 
| 
 | 
    24 			: base(ProviderName.Access)
 | 
| 
 | 
    25 		{
 | 
| 
 | 
    26 		}
 | 
| 
 | 
    27 
 | 
| 
 | 
    28 		public Table<Person>                 Person                 { get { return GetTable<Person>();                 } }
 | 
| 
 | 
    29 		public Table<Patient>                Patient                { get { return GetTable<Patient>();                } }
 | 
| 
 | 
    30 		public Table<Doctor>                 Doctor                 { get { return GetTable<Doctor>();                 } }
 | 
| 
 | 
    31 		public Table<Parent>                 Parent                 { get { return GetTable<Parent>();                 } }
 | 
| 
 | 
    32 		public Table<Parent1>                Parent1                { get { return GetTable<Parent1>();                } }
 | 
| 
 | 
    33 		public Table<IParent>                Parent2                { get { return GetTable<IParent>();                } }
 | 
| 
 | 
    34 		public Table<Parent4>                Parent4                { get { return GetTable<Parent4>();                } }
 | 
| 
 | 
    35 		public Table<Parent5>                Parent5                { get { return GetTable<Parent5>();                } }
 | 
| 
 | 
    36 		public Table<ParentInheritanceBase>  ParentInheritance      { get { return GetTable<ParentInheritanceBase>();  } }
 | 
| 
 | 
    37 		public Table<ParentInheritanceBase2> ParentInheritance2     { get { return GetTable<ParentInheritanceBase2>(); } }
 | 
| 
 | 
    38 		public Table<ParentInheritanceBase3> ParentInheritance3     { get { return GetTable<ParentInheritanceBase3>(); } }
 | 
| 
 | 
    39 		public Table<ParentInheritanceBase4> ParentInheritance4     { get { return GetTable<ParentInheritanceBase4>(); } }
 | 
| 
 | 
    40 		public Table<ParentInheritance1>     ParentInheritance1     { get { return GetTable<ParentInheritance1>();     } }
 | 
| 
 | 
    41 		public Table<ParentInheritanceValue> ParentInheritanceValue { get { return GetTable<ParentInheritanceValue>(); } }
 | 
| 
 | 
    42 		public Table<Child>                  Child                  { get { return GetTable<Child>();                  } }
 | 
| 
 | 
    43 		public Table<GrandChild>             GrandChild             { get { return GetTable<GrandChild>();             } }
 | 
| 
 | 
    44 		public Table<GrandChild1>            GrandChild1            { get { return GetTable<GrandChild1>();            } }
 | 
| 
 | 
    45 		public Table<LinqDataTypes>          Types                  { get { return GetTable<LinqDataTypes>();          } }
 | 
| 
 | 
    46 		public Table<LinqDataTypes2>         Types2                 { get { return GetTable<LinqDataTypes2>();         } }
 | 
| 
 | 
    47 		public Table<TestIdentity>           TestIdentity           { get { return GetTable<TestIdentity>();           } }
 | 
| 
 | 
    48 
 | 
| 
 | 
    49 		[TableFunction(Name="GetParentByID")]
 | 
| 
 | 
    50 		public Table<Parent> GetParentByID(int? id)
 | 
| 
 | 
    51 		{
 | 
| 
 | 
    52 			return GetTable<Parent>(this, (MethodInfo)MethodBase.GetCurrentMethod(), id);
 | 
| 
 | 
    53 		}
 | 
| 
 | 
    54 
 | 
| 
 | 
    55 		public string GetSqlText(SqlQuery sql)
 | 
| 
 | 
    56 		{
 | 
| 
 | 
    57 			var provider = ((IDataContext)this).CreateSqlProvider();
 | 
| 
 | 
    58 
 | 
| 
 | 
    59 			//provider.SqlQuery = sql;
 | 
| 
 | 
    60 
 | 
| 
 | 
    61 			sql = provider.Finalize(sql);
 | 
| 
 | 
    62 
 | 
| 
 | 
    63 			var cc = provider.CommandCount(sql);
 | 
| 
 | 
    64 			var sb = new StringBuilder();
 | 
| 
 | 
    65 
 | 
| 
 | 
    66 			var commands = new string[cc];
 | 
| 
 | 
    67 
 | 
| 
 | 
    68 			for (var i = 0; i < cc; i++)
 | 
| 
 | 
    69 			{
 | 
| 
 | 
    70 				sb.Length = 0;
 | 
| 
 | 
    71 
 | 
| 
 | 
    72 				provider.BuildSql(i, sql, sb, 0, 0, false);
 | 
| 
 | 
    73 				commands[i] = sb.ToString();
 | 
| 
 | 
    74 			}
 | 
| 
 | 
    75 
 | 
| 
 | 
    76 			return string.Join("\n\n", commands);
 | 
| 
 | 
    77 		}
 | 
| 
 | 
    78 		
 | 
| 
 | 
    79 #if !MONO		
 | 
| 
 | 
    80 		[MethodExpression("Expression9")]
 | 
| 
 | 
    81 		static public IQueryable<Parent> GetParent9(ITestDataContext db, Child ch)
 | 
| 
 | 
    82 		{
 | 
| 
 | 
    83 			throw new InvalidOperationException();
 | 
| 
 | 
    84 		}
 | 
| 
 | 
    85 
 | 
| 
 | 
    86 		[MethodExpression("Expression9")]
 | 
| 
 | 
    87 		public IQueryable<Parent> GetParent10(Child ch)
 | 
| 
 | 
    88 		{
 | 
| 
 | 
    89 			throw new InvalidOperationException();
 | 
| 
 | 
    90 		}
 | 
| 
 | 
    91 
 | 
| 
 | 
    92 		static Expression<Func<ITestDataContext,Child,IQueryable<Parent>>> Expression9()
 | 
| 
 | 
    93 		{
 | 
| 
 | 
    94 			return (db,ch) =>
 | 
| 
 | 
    95 				from p in db.Parent
 | 
| 
 | 
    96 				where p.ParentID == (int)Math.Floor(ch.ChildID / 10.0)
 | 
| 
 | 
    97 				select p;
 | 
| 
 | 
    98 		}
 | 
| 
 | 
    99 #endif		
 | 
| 
 | 
   100 	}
 | 
| 
 | 
   101 }
 |