~ Archive for Technology ~

First Look: An Entity Framework (LINQ to Entity) to IDataReader Adapter

3

Microsoft’s Entity Framework (EF) introduces a new data design paradigm within .NET. This framework, however, can be difficult to implement in projects that internally rely heavily on the exchange of IDataReader-implementing objects between layers (or within interface contracts). This is a shortcoming that is not easily overcome, especially without a standardized method with which to convert EF entities into an object implementing this interface. In many ways, migration of these projects to the Entity Framework is an all-or-nothing proposition.  This is a shortcoming that begs for remediation. 

(more…)

A Second Look: Enabling ASP.NET 2.0 Localization in a DotNetNuke Application

1

Some time ago, I wrote about an approach for enabling ASP.NET 2.0 localization within a DotNetNuke application.  This approach not only required a core modification, but the change introduced a potential breaking change with third party modules.  This was clearly unsatisfactory, and the fact that I was unable to fully solve the problem has been vexing me for some time.

As my research on the recently-released Linq to Sql Adapter (currently hosted on CodePlex) wound down, I decided to investigate a new approach to solving the problem.  In my opinion, an optimal solution would fulfill the following requirements:

  1. Require no core changes
  2. Be side-by-side compatible with the existing DotNetNuke localization services
  3. Require little configuration by a hosting user
  4. Allow strongly-typed per-portal and per-culture access to existing global DotNetNuke resources
  5. Minimal additional in-memory footprint and reasonable performance
  6. Enable use of the meta:resourcekey attribute in DotNetNuke modules
  7. Be fully compatibility with third-party modules

I am pleased to announce a preview release of a custom BuildProvider that, to my knowledge, accomplishes all of these goals.

(more…)

Using the Linq to Sql Adapter in a DotNetNuke Module

0

In a previous entry, I discussed a potential solution to a longstanding problem.  The DotNetNuke CMS framework allows declaration of an object qualifier and database owner on a per-installation basis.  This effectively varies the fully-qualified database entity names at runtime.  Because the Linq to Sql system by default utilizes a class attribution approach, it does not lend itself well to such runtime adaptation.

Here I describe the steps necessary to use Linq to Sql within a DotNetNuke module in a reliable, distributable manner.

(more…)

Adapting the Linq to Sql Attributed Meta-Model for Use in DotNetNuke

1

The .NET-supplied DataContext allows Linq to Sql development using the attributed model automatically generated by a Visual Studio designer. However, when deployed within DotNetNuke, these attributes do not pick up the database owner and object qualfier required by DotNetNuke.  Because of this, large-scale deployment of modules using Linq to Sql is infesable, and modules using the technology are unfortunately limited to internal applications.

To rememdy this issue, I have developed an adapter that converts the attributed meta model generated by the designer into a DotNetNuke-compatable model that uses both the object qualifier and database owner specified by an end-installation. 

(more…)

Improving DotNetNuke 5.0 Administrator Menu Organization

2

DotNetNuke Admin Menu (Original)One of my (few) cavils about the DotNetNuke Content Management System is the organization of the administrator menu.  Presenting an administrator with thirteen options (including somewhat inscrutable choices like “Extensions” and “Solutions”), is easily overwhelming for an often-technically unsophisticated administrator.  Indeed, both feedback from users and log analysis have indicated that several of these options are rarely utilized and thereby serve only to clutter the interface and increase the learning curve.

In pre-5.0 versions, despite being persisted to the database like any other page, the admin menu is restricted to one level.  This was a hardcoded limitation; though one could change the verbiage, order, or visibility of the items in the menu, one could not introduce additional levels of organization (without several changes to the core framework).

With DotNetNuke 5.0, however, because administrator pages are treated on-par with any other page on a site, an improvement in organization becomes possible.  Herein I discuss the changes necessary to, in my opinion, improve the overall organization of the DotNetNuke administrator menu.

(more…)

Changing the Size of ReportViewer Parameter Dropdown List

3

SSRS Report Viewer Parameters Dropdown (Before)I recently encountered an issue with the SSRS ReportViewer control where the parameter drop-down list was of insufficient width for the parameters contained therein.  Surprisingly, a search yielded no solutions.  Indeed, several individuals indicated that changing this width was not possible.

Fortunately, it does turn out to be possible.

(more…)

DotNetNuke Debugging with Debug-Build Assemblies (4.9 Update)

0

I recently wrote about the use of debug-build assemblies to identify and correct difficult–to-diagnose problems with a DotNetNuke installation (see this for a detailed discussion).

To date, a number of people have successfully used these builds in correcting a number of relatively arcane problems.  As such, I have elected to deploy debug-build version of the core DNN assemblies for the recently-released 4.9 version.

(more…)

Configuring custom INavigationService in WCSF Contrib library (Updated)

0

I recently wrote about implementing a custom PageFlow navigation provider in the WCSF library.  Since then, the patterns team has broken out the PageFlow block into a separate package (formally the “Patterns & Practices: Web Client Software Factory Contrib“).

Since my existing PageFlow navigation provider-related modifications became obsolete with this change, I thought I’d spend a few minutes porting my changes to the new block.  I actually completed this task a couple of months ago, but have just now found the time to post it publicly.  Thanks to those who persevered in prodding me to put it online!

(more…)

Enhanced DotNetNuke Debugging with Debug-Build Assemblies (Updated for 4.9)

3

In my previous post, I discussed my reasons and motivations behind providing DotNetNuke assemblies with debug symbols to the general public.  Herein, visitors will find links to those files and instructions for generating a call stack with file names and line numbers.

(more…)

Debugging Difficult Exceptions in DotNetNuke

2

During my time working with DotNetNuke, I have encountered innumerable forum posts in the following general form:

I’m getting a very vague general exception error, and I’m not sure what is causing it.  There doesn’t seem to be anything visible in the application . . . [and] no errors as I’m navigating the site. Any and all help is greatly appreciated!

StackTrace: [NullReferenceException: Object reference not set to an instance of an object.]
   DotNetNuke.UI.Skins.SkinDefaults..ctor(SkinDefaultType DefaultType) +189
   DotNetNuke .Common.Globals.get_DefaultSkin() +31
   DotNetNuke.Entities.Portals.PortalSettings.GetPortalSettings(Int32 TabId, PortalAliasInfo objPortalAliasInfo) +2797
   DotNetNuke.Entities.Portals.PortalSettings..ctor(Int32 tabId, PortalAliasInfo objPortalAliasInfo) +82
   DotNetNuke.HttpModules.UrlRewriteModule.OnBeginRequest(Object s, EventArgs e) +3303
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64

Experienced DNN developers will recognize the general area in which the error is occurring (missing skinningDefaults in DotNetNuke.config) and probably some general guidance to rectify the error (check that DotNetNuke.config exists, and correctly contains the proper skinningDefaults element).

This is fine for exceptions that occur frequently, but how does an experienced developer guide a novice in finding a solution to this issue?

[NullReferenceException: Object reference not set to an instance of an object.]
   DotNetNuke.HttpModules.UrlRewriteModule.RewriteUrl(HttpApplication app) +378
   DotNetNuke.HttpModules.UrlRewriteModule.OnBeginRequest(Object s, EventArgs e) +1180
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +64

Even a sophisticated developer would need to explore several avenues in finding a solution.  Assisting a relatively novice forum user in performing these tasks is problematic — such assistance would require a number of back-and-forth exchanges.  With regret, I unfortunately observe many problems go unremedied for this reason (as, to date, is the exception posted immediately above). (more…)

Log in
Protected by AkismetBlog with WordPress