使用“EF跟踪数据提供程序”时出错

时间:2010-07-15 15:49:29

标签: entity-framework logging asp.net-mvc-2

我正在尝试将“EF跟踪数据提供程序”合并到使用VS2010,.NET 4.0的现有MVC2应用程序中,以便记录所有SQL命令。我目前在缓存提供商中没有兴趣。我相信我已经按照博客文章中列出的所有步骤进行了操作。 BLOG POST我的项目编译时没有错误,但是当我尝试运行项目时,我收到以下错误:

'字符串的长度不能为零。错误指向Extended_JCIMS_MVC2_EF_Entities.cs行:25

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

我无法确定导致此错误的原因。我假设错误是指Web.Config文件中的连接字符串。它不喜欢'connectionString'变量。我显然在做些什么。我希望能朝着正确的方向前进。

马克巴克利 putrtek@gmail.com

Relevent位如下:

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...
   }

感谢任何人可以给我的帮助......

-MARK -

1 个答案:

答案 0 :(得分:0)

您是否已调试并确认传递给ExtendedJCIMS_DevEntities方法的connectionString不为null或为空?这就是错误似乎表明的内容。