Files
Dapper/Tests/SubSonic/Context.tt
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

295 lines
9.4 KiB
Plaintext

<#@ template language="C#v3.5" debug="False" hostspecific="True" #>
<#@ output extension=".cs" #>
<#@ include file="SQLServer.ttinclude" #>
<#
var tables = LoadTables();
#>
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 <#=Namespace#>
{
public partial class <#=DatabaseName#>DB : 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 <#=DatabaseName#>DB()
{
if (DefaultDataProvider == null) {
DataProvider = ProviderFactory.GetProvider("<#=ConnectionStringName#>");
}
else {
DataProvider = DefaultDataProvider;
}
Init();
}
public <#=DatabaseName#>DB(string connectionStringName)
{
DataProvider = ProviderFactory.GetProvider(connectionStringName);
Init();
}
public <#=DatabaseName#>DB(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;
}
<# //################################################ IQueryable ####################################### #>
<# foreach(Table tbl in tables){
if(!ExcludeTables.Contains(tbl.Name))
{
#>
public Query<<#=tbl.ClassName#>> <#=tbl.QueryableName#> { get; set; }
<#
}
}
#>
<# //################################################ Aggregates and Queries ####################################### #>
#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);
<#
//################################################ QUERIES ####################################### #>
#region ' Query Defs '
<#
foreach(Table tbl in tables)
{
if(!ExcludeTables.Contains(tbl.Name))
{
#>
<#=tbl.QueryableName#> = new Query<<#=tbl.ClassName#>>(provider);
<#
}
#>
<#
}
#>
#endregion
<#//################################################ SCHEMAS ####################################### #>
#region ' Schemas '
if(DataProvider.Schema.Tables.Count == 0)
{
<#
foreach(Table tbl in tables)
{
if(!ExcludeTables.Contains(tbl.Name))
{
#>
DataProvider.Schema.Tables.Add(new <#=tbl.CleanName#>Table(DataProvider));
<#
}
}
#>
}
#endregion
}
<#//################################################ HELPERS ####################################### #>
#region ' Helpers '
internal static DateTime DateTimeNowTruncatedDownToSecond() {
var now = DateTime.Now;
return now.AddTicks(-now.Ticks % TimeSpan.TicksPerSecond);
}
#endregion
}
}