views:

28

answers:

1

I am Trying to incorporate 'EF Tracing Data Provider' into an existing MVC2 app using VS2010, .NET 4.0 in order to log all SQL commands. I have no interest at this time in the Caching provider. I beleive I have followed all the steps listed in the blog posting. BLOG POST My project does compile without error, however when I attempt to run the project I get the following error:

'String cannot have zero length.' The error points to Extended_JCIMS_MVC2_EF_Entities.cs Line: 25

Line 25:         public ExtendedJCIMS_DevEntities(string connectionString)
Line 26:             :base(EntityConnectionWrapperUtils.CreateEntityConnectionWithWrappers(

I am unable to determine what is causing this error. I assume the error is referring to the connection string from the Web.Config file. It does not like the 'connectionString' variable. I'm obviously doing something worng. I would appreciate a push in the right direction.

Mark Buckley [email protected]

The Relevent bits are as follows:

Web.config
--------------------------------------------------------------------------

  <add name="JCIMS_DevEntities"
   connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyServer;Initial          Catalog=MyDatabase;User ID=MyUser;Password=myPassWord;MultipleActiveResultSets=True&quot;"
   providerName="System.Data.EntityClient"/>

<system.data>
 <DbProviderFactories>
  <add name="EF Tracing Data Provider" invariant="EFTracingProvider" description="Tracing Provider Wrapper"
     type="EFTracingProvider.EFTracingProviderFactory, EFTracingProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
   <add name="EF Generic Provider Wrapper" invariant="EFProviderWrapper" description="Generic Provider Wrapper"
     type="EFProviderWrapperToolkit.EFProviderWrapperFactory, EFProviderWrapperToolkit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
 </DbProviderFactories>
  </system.data>


Global.ascx
-----------------------------------------------------------------------

protected void Application_Start()
{
 AreaRegistration.RegisterAllAreas();
 RegisterRoutes(RouteTable.Routes);
 //EFTracingProviderConfiguration - LOG ALL Sql commands
 EFTracingProviderConfiguration.LogToFile = Server.MapPath("~/JCIMS_MVC2_EF_SQL_Logfie.txt");
} 


Extended_JCIMS_MVC2_EF_Entities.cs
        --------------------------------------------------------------------------
namespace JCIMS_MVC2_EF.DomainModel
{
 /// <summary>
 /// Partial calss that Extends the EF Datacontext Class
 /// </summary>
 public partial class ExtendedJCIMS_DevEntities : JCIMS_DevEntities
 {
  private TextWriter logOutput;

  public ExtendedJCIMS_DevEntities()
   : this("name=JCIMS_DevEntities")
  {
  }

  public ExtendedJCIMS_DevEntities(string connectionString)
   : base(EntityConnectionWrapperUtils.CreateEntityConnectionWithWrappers(
     connectionString,
     "EFTracingProvider"                  
   ))
  {
  }

  //... and more
}
}  

  SearchRepository.cs
 ------------------------------------------------------------------
public class SQLSearchRepository : ISearchRepository
{
 //Database connection
   private ExtendedJCIMS_DevEntities db = new ExtendedJCIMS_DevEntities(); // tracing version

 public IEnumerable<SearchResults> ListAll(string strSearch, string chkSearch)
   {
  return (from s in db.Schools....
  // and more...
   }

Appreciate any assistance anyone can give me...

-MARK-

A: 

Have you debugged and confirmed that the connectionString passed into the ExtendedJCIMS_DevEntities method is not null or empty? That's what the error seems to indicate.

Dave Swersky
Yes... If I put a breakpoint on that method the connectionString contains... "name=JCIMS_DevEntities"
Mark Buckley