Files
Dapper/Tests/SubSonic/Context.cs
T
Sam "Waffles" Saffron 757999a07e reorganised and added a nuget pack
--HG--
rename : Properties/AssemblyInfo.cs => Dapper/Properties/AssemblyInfo.cs
rename : SqlMapper.cs => Dapper/SqlMapper.cs
rename : SqlMapper.csproj => Tests/DapperTests.csproj
rename : EntityFramework/Model.Designer.cs => Tests/EntityFramework/Model.Designer.cs
rename : EntityFramework/Model.edmx => Tests/EntityFramework/Model.edmx
rename : License.txt => Tests/License.txt
rename : Linq2Sql/DataClasses.dbml => Tests/Linq2Sql/DataClasses.dbml
rename : Linq2Sql/DataClasses.dbml.layout => Tests/Linq2Sql/DataClasses.dbml.layout
rename : Linq2Sql/DataClasses.designer.cs => Tests/Linq2Sql/DataClasses.designer.cs
rename : Linq2Sql/Post.cs => Tests/Linq2Sql/Post.cs
rename : Massive/Massive.cs => Tests/Massive/Massive.cs
rename : NHibernate/Iesi.Collections.dll => Tests/NHibernate/Iesi.Collections.dll
rename : NHibernate/LinFu.DynamicProxy.dll => Tests/NHibernate/LinFu.DynamicProxy.dll
rename : NHibernate/NHibernate.ByteCode.LinFu.dll => Tests/NHibernate/NHibernate.ByteCode.LinFu.dll
rename : NHibernate/NHibernate.dll => Tests/NHibernate/NHibernate.dll
rename : NHibernate/NHibernateHelper.cs => Tests/NHibernate/NHibernateHelper.cs
rename : NHibernate/Post.hbm.xml => Tests/NHibernate/Post.hbm.xml
rename : NHibernate/hibernate.cfg.xml => Tests/NHibernate/hibernate.cfg.xml
rename : OrmLite/ServiceStack.Common.dll => Tests/OrmLite/ServiceStack.Common.dll
rename : OrmLite/ServiceStack.Interfaces.dll => Tests/OrmLite/ServiceStack.Interfaces.dll
rename : OrmLite/ServiceStack.OrmLite.SqlServer.dll => Tests/OrmLite/ServiceStack.OrmLite.SqlServer.dll
rename : OrmLite/ServiceStack.OrmLite.dll => Tests/OrmLite/ServiceStack.OrmLite.dll
rename : OrmLite/ServiceStack.Text.dll => Tests/OrmLite/ServiceStack.Text.dll
rename : PerformanceTests.cs => Tests/PerformanceTests.cs
rename : PetaPoco/PetaPoco.cs => Tests/PetaPoco/PetaPoco.cs
rename : Program.cs => Tests/Program.cs
rename : Properties/AssemblyInfo.cs => Tests/Properties/AssemblyInfo.cs
rename : Properties/Settings.Designer.cs => Tests/Properties/Settings.Designer.cs
rename : Properties/Settings.settings => Tests/Properties/Settings.settings
rename : SubSonic/ActiveRecord.cs => Tests/SubSonic/ActiveRecord.cs
rename : SubSonic/ActiveRecord.tt => Tests/SubSonic/ActiveRecord.tt
rename : SubSonic/Context.cs => Tests/SubSonic/Context.cs
rename : SubSonic/Context.tt => Tests/SubSonic/Context.tt
rename : SubSonic/SQLServer.ttinclude => Tests/SubSonic/SQLServer.ttinclude
rename : SubSonic/Settings.ttinclude => Tests/SubSonic/Settings.ttinclude
rename : SubSonic/StoredProcedures.cs => Tests/SubSonic/StoredProcedures.cs
rename : SubSonic/StoredProcedures.tt => Tests/SubSonic/StoredProcedures.tt
rename : SubSonic/Structs.cs => Tests/SubSonic/Structs.cs
rename : SubSonic/Structs.tt => Tests/SubSonic/Structs.tt
rename : SubSonic/SubSonic.Core.dll => Tests/SubSonic/SubSonic.Core.dll
rename : Tests.cs => Tests/Tests.cs
rename : app.config => Tests/app.config
rename : bltoolkit/BLToolkit.4.dll => Tests/bltoolkit/BLToolkit.4.dll
2011-04-13 23:48:40 -07:00

258 lines
8.2 KiB
C#

using System;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using SubSonic.DataProviders;
using SubSonic.Extensions;
using SubSonic.Linq.Structure;
using SubSonic.Query;
using SubSonic.Schema;
using System.Data.Common;
using System.Collections.Generic;
namespace SubSonic
{
public partial class tempdbDB : IQuerySurface
{
public IDataProvider DataProvider;
public DbQueryProvider provider;
public static IDataProvider DefaultDataProvider { get; set; }
public bool TestMode
{
get
{
return DataProvider.ConnectionString.Equals("test", StringComparison.InvariantCultureIgnoreCase);
}
}
public tempdbDB()
{
if (DefaultDataProvider == null) {
DataProvider = ProviderFactory.GetProvider("Smackdown.Properties.Settings.tempdbConnectionString");
}
else {
DataProvider = DefaultDataProvider;
}
Init();
}
public tempdbDB(string connectionStringName)
{
DataProvider = ProviderFactory.GetProvider(connectionStringName);
Init();
}
public tempdbDB(string connectionString, string providerName)
{
DataProvider = ProviderFactory.GetProvider(connectionString,providerName);
Init();
}
public ITable FindByPrimaryKey(string pkName)
{
return DataProvider.Schema.Tables.SingleOrDefault(x => x.PrimaryKey.Name.Equals(pkName, StringComparison.InvariantCultureIgnoreCase));
}
public Query<T> GetQuery<T>()
{
return new Query<T>(provider);
}
public ITable FindTable(string tableName)
{
return DataProvider.FindTable(tableName);
}
public IDataProvider Provider
{
get { return DataProvider; }
set {DataProvider=value;}
}
public DbQueryProvider QueryProvider
{
get { return provider; }
}
BatchQuery _batch = null;
public void Queue<T>(IQueryable<T> qry)
{
if (_batch == null)
_batch = new BatchQuery(Provider, QueryProvider);
_batch.Queue(qry);
}
public void Queue(ISqlQuery qry)
{
if (_batch == null)
_batch = new BatchQuery(Provider, QueryProvider);
_batch.Queue(qry);
}
public void ExecuteTransaction(IList<DbCommand> commands)
{
if(!TestMode)
{
using(var connection = commands[0].Connection)
{
if (connection.State == ConnectionState.Closed)
connection.Open();
using (var trans = connection.BeginTransaction())
{
foreach (var cmd in commands)
{
cmd.Transaction = trans;
cmd.Connection = connection;
cmd.ExecuteNonQuery();
}
trans.Commit();
}
connection.Close();
}
}
}
public IDataReader ExecuteBatch()
{
if (_batch == null)
throw new InvalidOperationException("There's nothing in the queue");
if(!TestMode)
return _batch.ExecuteReader();
return null;
}
public Query<Post> Posts { get; set; }
#region ' Aggregates and SubSonic Queries '
public Select SelectColumns(params string[] columns)
{
return new Select(DataProvider, columns);
}
public Select Select
{
get { return new Select(this.Provider); }
}
public Insert Insert
{
get { return new Insert(this.Provider); }
}
public Update<T> Update<T>() where T:new()
{
return new Update<T>(this.Provider);
}
public SqlQuery Delete<T>(Expression<Func<T,bool>> column) where T:new()
{
LambdaExpression lamda = column;
SqlQuery result = new Delete<T>(this.Provider);
result = result.From<T>();
result.Constraints=lamda.ParseConstraints().ToList();
return result;
}
public SqlQuery Max<T>(Expression<Func<T,object>> column)
{
LambdaExpression lamda = column;
string colName = lamda.ParseObjectValue();
string objectName = typeof(T).Name;
string tableName = DataProvider.FindTable(objectName).Name;
return new Select(DataProvider, new Aggregate(colName, AggregateFunction.Max)).From(tableName);
}
public SqlQuery Min<T>(Expression<Func<T,object>> column)
{
LambdaExpression lamda = column;
string colName = lamda.ParseObjectValue();
string objectName = typeof(T).Name;
string tableName = this.Provider.FindTable(objectName).Name;
return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Min)).From(tableName);
}
public SqlQuery Sum<T>(Expression<Func<T,object>> column)
{
LambdaExpression lamda = column;
string colName = lamda.ParseObjectValue();
string objectName = typeof(T).Name;
string tableName = this.Provider.FindTable(objectName).Name;
return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Sum)).From(tableName);
}
public SqlQuery Avg<T>(Expression<Func<T,object>> column)
{
LambdaExpression lamda = column;
string colName = lamda.ParseObjectValue();
string objectName = typeof(T).Name;
string tableName = this.Provider.FindTable(objectName).Name;
return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Avg)).From(tableName);
}
public SqlQuery Count<T>(Expression<Func<T,object>> column)
{
LambdaExpression lamda = column;
string colName = lamda.ParseObjectValue();
string objectName = typeof(T).Name;
string tableName = this.Provider.FindTable(objectName).Name;
return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Count)).From(tableName);
}
public SqlQuery Variance<T>(Expression<Func<T,object>> column)
{
LambdaExpression lamda = column;
string colName = lamda.ParseObjectValue();
string objectName = typeof(T).Name;
string tableName = this.Provider.FindTable(objectName).Name;
return new Select(this.Provider, new Aggregate(colName, AggregateFunction.Var)).From(tableName);
}
public SqlQuery StandardDeviation<T>(Expression<Func<T,object>> column)
{
LambdaExpression lamda = column;
string colName = lamda.ParseObjectValue();
string objectName = typeof(T).Name;
string tableName = this.Provider.FindTable(objectName).Name;
return new Select(this.Provider, new Aggregate(colName, AggregateFunction.StDev)).From(tableName);
}
#endregion
void Init()
{
provider = new DbQueryProvider(this.Provider);
#region ' Query Defs '
Posts = new Query<Post>(provider);
#endregion
#region ' Schemas '
if(DataProvider.Schema.Tables.Count == 0)
{
DataProvider.Schema.Tables.Add(new PostsTable(DataProvider));
}
#endregion
}
#region ' Helpers '
internal static DateTime DateTimeNowTruncatedDownToSecond() {
var now = DateTime.Now;
return now.AddTicks(-now.Ticks % TimeSpan.TicksPerSecond);
}
#endregion
}
}