Kevin Castle Dot Net
MyPicture.gif in content/binary
Navigation
RSS 2.0
Calendar View
<October 2008>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Categories
On this page....
Categories
Blogroll

Powered by: newtelligence dasBlog 1.9.6264.0

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008 , Kevin Castle

Send mail to the author(s) E-mail

 Thursday, January 18, 2007

I meant to publish this document some time ago, but I haven't had much time at all to post anything lately.

This document was a result of early project research into what DAL and BLL code generation tool that we should use. In sum the project was a CRM web application which was to be developed using the MSF Agile process. The requirements were loosely defined and likely to change. Before I had started at the company, a developer had already created a prototype site for the project using the NetTiers template for CodeSmith. Initially, I was extremely impressed with the generated code but as I started needing more customization, flexibility, and stability I decided to do a small comparison between NetTiers and LLBLGen to see which product best served our project.

This .doc file is the result of my findings:

Code Generation Product Comparison.doc


In the end we decided to go with LLBLGen. Looking back  a few months ago I definitely feel that this was the best decision that we could have made. Our company is so impressed that a couple of our other projects have purchased licenses and are under development as we speak.

Biggest reasons why we chose LLBLGen over NetTiers:

  1. LLBLGen is much more flexible - We are capable of renaming entities, customizing property names, adding custom relationships, creating typed lists, etc.
  2. LLBLGen will probably be supported much more strongly. Since NetTiers is an open source project we were concerned about building an important (costly) application on something which would bear little to no responsibility on any vendors.
  3. NetTiers 2 was currently under development when we were considering the decision. As we modified the database and regenerated the project, we were running into both runtime and compiler errors.

Post Date: Thursday, January 18, 2007 8:34:08 AM (Pacific Standard Time, UTC-08:00)
Disclaimer | Comments [1] | Trackback   #
 Thursday, November 09, 2006

CodeSmith 4.0 has been officially released. The press release can be viewed here and for a more in depth look at the feature set please check out one of my previous posts on CodeSmith 4.0 Beta 2 features.

A few days ago this would have been big news for me, but as of yesterday after doing a product comparison on the NetTiers CodeSmith Template and LLBLGen Pro, we decided to go ahead and purchase LLBLGen Pro for our project's ORM needs.


Post Date: Thursday, November 09, 2006 10:45:20 AM (Pacific Standard Time, UTC-08:00)
Disclaimer | Comments [0] | Trackback   #
 Thursday, November 02, 2006

Arron Hallberg has a really interesting post on his blog on how to add a custom task to the Team Foundation Build Process. The possibilities of this type of extensibility which most areas of TFS have out of the box are truly amazing.

I have worked with a few code generation tools in the past, Wilson ORMapper, LLBLGen Pro, and now CodeSmith and immediately I thought how great it would be to automate these code generation tools into the build process. Ill probably take a stab at this very soon.


Post Date: Thursday, November 02, 2006 5:35:03 PM (Pacific Standard Time, UTC-08:00)
Disclaimer | Comments [1] | Trackback   #
 Wednesday, October 25, 2006

CodeSmith 4.0 Beta 2 was recently released.

Below is a sample list of changes which have been made from the previous version 3.2.X.

  • CodeSmith Project support (.csp files).  This replaces property sets, the custom tool and the batch format.

    • CodeSmith Projects can be run from the command line, inside MSBuild, inside CodeSmith Studio, and inside Windows Explorer.
    • Inside of Visual Studio, any outputs that are generated will automatically be added to your project.
    • If you build your project and you have the "Generate On Build" option on, your outputs will automatically be re-generated even if you generate from the command line using MSBuild.
    • Progress dialog is shown when running from Windows Explorer.
    • GUI dialogs to easily manage your project file.
    • Easily add new outputs where you select a template and specify the property values.
    • You can also specify merge settings through the GUI to enable code merging support.
  • ActiveSnippet support.  This will allow you to type something like:  "tp Petshop.dbo.Orders" inside of Visual Studio and then hit the expand key (CTRL-E, CTRL-E by default) and it will expand out into a list of property getters/setters and member variables based on the fields and data types of the Orders table.
  • CodeSmith Map support (.csmap files).  This feature will allow you to create dictionary style maps of things like SQL to C# data type mappings.
    • Example: <%@ Map Name="CSharpTypeAlias" src="System-CSharpAlias.csmap" Description="Maps system types to C# aliases." %> <%= CSharpTypeAlias["System.String"] %> = "string"
    • Ability to reverse the map and use the values as the map keys.  This is useful for doing reverse lookups.
    • Ability to return the key value if a corresponding map entry is not found.
    • Ability to return a default value if a corresponding map entry is not found.
    • Ability to manage maps inside CodeSmith Studio or from Windows Explorer.
  • Ability to manage database schema extended property values from inside of CodeSmith Studio.
  • XmlProperty support has been enhanced to handle more variations of XSD.
  • Template property values are saved for templates so that each time you run them, you donb_t have to reset the values manually.
  • .netTiers 2.0 templates are included in the install.
  • Added csxsd.exe to allow manually creating shared XmlProperty assemblies.
  • Ton of new system extended properties added to SchemaExplorer objects.
  • Bunch of performance improvements here and there throughout CodeSmith.
  • Bunch of bug fixes.

For further detail for Beta 1 and 2 changes please check out this entry on the CodeSmith Community Blog.

In addition, I also found these screenshots and specific feature explanations to be really insightful.


Post Date: Wednesday, October 25, 2006 11:42:54 AM (Pacific Standard Time, UTC-08:00)
Disclaimer | Comments [0] | Trackback   #
 Wednesday, October 04, 2006

In regard to my previous post on tracing sql statemens generated by llblgen, it turns out that someone has developed a more useful method for tracing LLBLGen Pro 2 by extending the internal partial class and modifying the output so that you can copy and past the SQL statements written to the Output window into Sql Management Studio or Sql Query Analyzer.

Click here to read the full blog entry @ RightHand blogs


Post Date: Wednesday, October 04, 2006 1:59:43 PM (Pacific Standard Time, UTC-08:00)
Disclaimer | Comments [0] | Trackback   #

The following information is extremely helpful if you find a need to view all of the SQL statements which LLBLGen Pro is generating while executing your project. Sitting back and letting LLBL Gen act like a magical bridge between your objects and your database, but sometimes you really need to know whats going. Perhaps the biggest reason why I decided to dig a little deeper stemmed from the fact that we were on a project with huge scalability concerns.

Add the following to your web.config file following the <system.web> section.

<system.diagnostics>

    <switches>

        <add name="SqlServerDQE" value="4" />

        <add name="AccessDQE" value="4" />

        <add name="OracleDQE" value="4" />

        <add name="FirebirdDQE" value="4" />

        <add name="MySqlDQE" value="4" />

        <add name="DB2DQE" value="4" />

        <add name="PostgeSqlDQE" value="4" />

        <add name="ORMGeneral" value="0" />

        <add name="ORMStateManagement" value="0" />

        <add name="ORMPersistenceExecution" value="3" />

    </switches>

</system.diagnostics>

Watch the Output menu to see what statements are being built and executed by the SqlServer Dynamic Query Engine

Sample output:

Method Exit: CreateSelectDQ
Method Exit: CreatePagingSelectDQ: no paging.
Method Enter: DaoBase.ExecuteMultiRowRetrievalQuery
Method Exit: DaoBase.ExecuteMultiRowRetrievalQuery
Method Exit: DaoBase.PerformGetMultiAction
Method Enter: CreateRowCountDQ
Method Enter: CreateSelectDQ
Method Enter: CreateSelectDQ
Generated Sql query:
Query: SELECT [TableName].[dbo].[Link].[ID] AS [Id], [TableName].[dbo].[Link].[DisplayName], [TableName].[dbo].[Link].[URL] AS [Url], [TableName].[dbo].[Link].[Description], [TableName].[dbo].[Link].[CategoryID] AS [CategoryId] FROM [TableName].[dbo].[Link]

Method Exit: CreateSelectDQ
Generated Sql query:
Query: SELECT COUNT(*) AS NumberOfRows FROM (SELECT [TableName].[dbo].[Link].[ID] AS [Id], [TableName].[dbo].[Link].[DisplayName], [TableName].[dbo].[Link].[URL] AS [Url], [TableName].[dbo].[Link].[Description], [TableName].[dbo].[Link].[CategoryID] AS [CategoryId] FROM [TableName].[dbo].[Link] ) TmpResult

Method Exit: CreateRowCountDQ
Method Enter: DaoBase.ExecuteScalarQuery
Method Exit: DaoBase.ExecuteScalarQuery
Method Enter: DaoBase.PerformGetMultiAction
Method Enter: CreatePagingSelectDQ
Method Enter: CreateSelectDQ
Method Enter: CreateSelectDQ
Generated Sql query:
Query: SELECT [TableName].[dbo].[Link].[ID] AS [Id], [TableName].[dbo].[Link].[DisplayName], [TableName].[dbo].[Link].[URL] AS [Url], [VirginiaAgencyRedesign].[dbo].[Link].[Description], [TableName].[dbo].[Link].[CategoryID] AS [CategoryId] FROM [TableName].[dbo].[Link] ORDER BY [TableName].[dbo].[Link].[DisplayName] ASC

Method Exit: CreateSelectDQ
Generated Sql query:
Query: SELECT TOP 10 [TableName].[dbo].[Link].[ID] AS [Id], [TableName].[dbo].[Link].[DisplayName], [TableName].[dbo].[Link].[URL] AS [Url], [TableName].[dbo].[Link].[Description], [TableName].[dbo].[Link].[CategoryID] AS [CategoryId] FROM [TableName].[dbo].[Link] ORDER BY [TableName].[dbo].[Link].[DisplayName] ASC


Post Date: Wednesday, October 04, 2006 1:31:32 PM (Pacific Standard Time, UTC-08:00)
Disclaimer | Comments [0] | Trackback   #
 Monday, September 25, 2006

One of the things that I have noticed about LLBLGen Pro Version 2.0 is that, post installation, the LLBLGenProDataSource control is not added to your control. In my opnion one of the most important additions to the second version for LLBL is the fact that it supports the ObjectDataSource control model, but the control is only useful in your organization if people use it in development.

The following is a summary of how to add the DataSource control to your Toolbox:

1 .Right click toolbar and choose items. (Loading the choose items dialog may take a few moments)

 

2. On the choose items dialog click Browse

3.Locate the SD.LLBLGen.Pro.ORMSupportClasses.NET20.dll and select open.

4. The choose items list has now been updated.

Sort the list by name and check the box next to LLBLGenProDataSource. (note both of the Datasources will select automatically).

Select OK and view the new items on your toolbar.


Post Date: Monday, September 25, 2006 6:22:23 PM (Pacific Standard Time, UTC-08:00)
Disclaimer | Comments [1] | Trackback   #