Mercurial > pub > bltoolkit
diff UnitTests/Linq/TestDbManager.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/UnitTests/Linq/TestDbManager.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,101 @@ +using System; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using System.Text; + +using BLToolkit.Data; +using BLToolkit.Data.DataProvider; +using BLToolkit.Data.Linq; +using BLToolkit.Data.Sql; + +namespace Data.Linq +{ + using Model; + + public class TestDbManager : DbManager, ITestDataContext + { + public TestDbManager(string configString) + : base(configString) + { + } + + public TestDbManager() + : base(ProviderName.Access) + { + } + + public Table<Person> Person { get { return GetTable<Person>(); } } + public Table<Patient> Patient { get { return GetTable<Patient>(); } } + public Table<Doctor> Doctor { get { return GetTable<Doctor>(); } } + public Table<Parent> Parent { get { return GetTable<Parent>(); } } + public Table<Parent1> Parent1 { get { return GetTable<Parent1>(); } } + public Table<IParent> Parent2 { get { return GetTable<IParent>(); } } + public Table<Parent4> Parent4 { get { return GetTable<Parent4>(); } } + public Table<Parent5> Parent5 { get { return GetTable<Parent5>(); } } + public Table<ParentInheritanceBase> ParentInheritance { get { return GetTable<ParentInheritanceBase>(); } } + public Table<ParentInheritanceBase2> ParentInheritance2 { get { return GetTable<ParentInheritanceBase2>(); } } + public Table<ParentInheritanceBase3> ParentInheritance3 { get { return GetTable<ParentInheritanceBase3>(); } } + public Table<ParentInheritanceBase4> ParentInheritance4 { get { return GetTable<ParentInheritanceBase4>(); } } + public Table<ParentInheritance1> ParentInheritance1 { get { return GetTable<ParentInheritance1>(); } } + public Table<ParentInheritanceValue> ParentInheritanceValue { get { return GetTable<ParentInheritanceValue>(); } } + public Table<Child> Child { get { return GetTable<Child>(); } } + public Table<GrandChild> GrandChild { get { return GetTable<GrandChild>(); } } + public Table<GrandChild1> GrandChild1 { get { return GetTable<GrandChild1>(); } } + public Table<LinqDataTypes> Types { get { return GetTable<LinqDataTypes>(); } } + public Table<LinqDataTypes2> Types2 { get { return GetTable<LinqDataTypes2>(); } } + public Table<TestIdentity> TestIdentity { get { return GetTable<TestIdentity>(); } } + + [TableFunction(Name="GetParentByID")] + public Table<Parent> GetParentByID(int? id) + { + return GetTable<Parent>(this, (MethodInfo)MethodBase.GetCurrentMethod(), id); + } + + public string GetSqlText(SqlQuery sql) + { + var provider = ((IDataContext)this).CreateSqlProvider(); + + //provider.SqlQuery = sql; + + sql = provider.Finalize(sql); + + var cc = provider.CommandCount(sql); + var sb = new StringBuilder(); + + var commands = new string[cc]; + + for (var i = 0; i < cc; i++) + { + sb.Length = 0; + + provider.BuildSql(i, sql, sb, 0, 0, false); + commands[i] = sb.ToString(); + } + + return string.Join("\n\n", commands); + } + +#if !MONO + [MethodExpression("Expression9")] + static public IQueryable<Parent> GetParent9(ITestDataContext db, Child ch) + { + throw new InvalidOperationException(); + } + + [MethodExpression("Expression9")] + public IQueryable<Parent> GetParent10(Child ch) + { + throw new InvalidOperationException(); + } + + static Expression<Func<ITestDataContext,Child,IQueryable<Parent>>> Expression9() + { + return (db,ch) => + from p in db.Parent + where p.ParentID == (int)Math.Floor(ch.ChildID / 10.0) + select p; + } +#endif + } +}