Posted by Monty on December 25th, 2009
SELECT 'ALTER TABLE ' + OBJECT_NAME(f.parent_object_id) + ' DROP CONSTRAINT [' + f.name + ']'
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc
ON f.OBJECT_ID = fc.constraint_object_id
UNION ALL
SELECT 'TRUNCATE TABLE ' + name FROM dbo.sysobjects WHERE (type = 'u') and name != 'sysdiagrams'
UNION ALL
SELECT 'ALTER TABLE ' + OBJECT_NAME(f.parent_object_id) + ' ADD CONSTRAINT ' + f.name + ' FOREIGN KEY (' + COL_NAME(fc.parent_object_id, fc.parent_column_id) + ') REFERENCES ' + OBJECT_NAME (f.referenced_object_id) + '(' + COL_NAME(fc.referenced_object_id, fc.referenced_column_id) + ')' FROM sys.foreign_keys AS f INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
Posted by Monty on December 22nd, 2009
Once you get your head around the DeepLoading and Inclusive/Exclusive Lists in NetTiers, its not too hard, but it isnt straightforward to start off with. Take this VERY simplified class, as an example:
class Product
{
public TList<Product> ChildrenProducts {get;set;}
public Product ParentProduct {get;set;}
}
If you want to deepload the ChildrenProducts collection, you think youd run the following:
DataRepository.ProductProvider.DeepLoad(product,true,DeepLoadType.IncludeChildren, new []{typeof(Product)});
But that will load the ParentProduct product, and not your ChildrenProducts collection, even though its just a list of Product.
What you want to do is:
DataRepository.ProductProvider.DeepLoad(product,true,DeepLoadType.IncludeChildren, new []{typeof(TList<Product>)});
Posted by Monty on December 19th, 2009
Im guessing because the .net 4.0 framework is still in the beta stages, that’s why NAnt (and TeamCity) arnt supporting it, but from what I can tell, mstcthe method to build it hasnt changed since .net 2.0′s msbuild way of compiling a solution. Basically, all you need to do is call msbuild from the command line, give it the path of the solution, and off it goes to build it. You can specify additional information such as the build target etc, but its not essential.
Whereas normally, within NAnt, you would run the following:
<solution configuration="release" solutionfile="test.sln" />
This aparently dosent work with the .net 4.0 framework, it seems to not detect it. From what I can tell, the quickest way around this is to do the following:
<exec program="c:\Windows\Microsoft.NET\Framework64\v4.0.21006\MSBuild.exe" basedir="C:\SVN\CycleMania\" verbose="true" >
<arg value="C:\SVN\CycleMania\CycleMania.sln" />
</exec>
Obviously, change the path in the program attribute to suit where Windows is located, and change the Framework64 to simply Framework if you are not running on a 64bit platform. One quirk that I fonud is that you have to have the BaseDir as where the solution is based, otherwise it throws errors about it cannot build properly.
And that should be it! If you are still struggling to compile on the .net 4.0 framework from within Nant, give me a shout.
Posted by Monty on December 18th, 2009
Its now public knowledge that I have been working on getting a decent CI integration for the CycleMania project working on a publicly accessable server.
For the record, we are using the following tech for the CI integration. Yes, I WILL write a very detailed how-to on how I set things up, but as I am on my lunchbreak here at work, heres a very quick overview of what we are using:
- TeamCity 5.0 Professional, a free download from JetBrains (Limit of 20 Projects and 20 Users)
- .Net framework 4.0 Beta 2 (obviously)
- Nant 0.85, not as a proper build script, but purely as a glorified as a batch script
- APPCMD command to control IIS7′s App recycling (From inside Nant)
- .Net 4.0′s MSBuild
All this running ontop of Windows 2008 R2 Web Edition, and SQL Server 2008 Express.
Things I have learned is:
- TeamCity 5.0 isnt geared up for .net 4.0 YET, which is fair enough, they said support will be included in 5.1
- TeamCity also seems to be simply geared for building projects and running unit tests, less so for copying files over to another directory with specific paths etc.
- Nant’s contrib project is crap. Fair enough last time it was updated was 3 years ago, but it dosent work.
- You cannot simply recycle an app pool to kill a user instance of SQL Server 2008, to update the .mdf file.
- You really shouldnt run a site from the same directory as SVN, if you plan to update it (re above)
- Nant is all good and well, but also dosent support .net 4.0.
I promise I will expand on most of these points when I have time!
Posted by Monty on December 8th, 2009
Well after spending half an hour looking on the net on how to disable WarningAsError on a WEBSITE project, everyone kept saying the same thing – edit the project settings – WELL A WEBSITE PROJECT DOSENT HAVE PROJECT SETTINGS!
Anyway, here is the solution, you need to edit your web.config :
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="3" compilerOptions="/d:DEBUG;TRACE">
</compiler>
</compilers>
</system.codedom>
Should turn into the following:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="3" compilerOptions="/d:DEBUG;TRACE">
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
The line you want in question is:
<providerOption name="WarnAsError" value="false"/>
And this baby will make it work! Enjoy!
Recent Comments