Не удается заставить MvcMiniProfiler работать с EF4.1 и нашим шаблоном репозитория. - PullRequest
2 голосов
/ 23 августа 2011

у нас много проблем, когда мы пытаемся заставить MvcMiniProfiler работать с нашей EF-реализацией шаблона репозитория.

Ошибка:

Тип сущности CustomEntityPewPewFooFoo не является частью модели для текущий контекст.

Ok. это код, который мы сделали.

Пользовательский контекстный класс UnitOfWork

public class UnitOfWork : DbContext
{
    public UnitOfWork(string connectionString) 
        : base(GetProfiledConnection(connectionString))
    { }

    private static DbConnection GetProfiledConnection(string connectionString)
    {
        var parsedConnectionString = new
            EntityConnectionStringBuilder(connectionString);
        var connection = new
            SqlConnection(parsedConnectionString.ProviderConnectionString);
        return ProfiledDbConnection.Get(connection);
    }

    public void Commit() { ... }
}

Добавить заводские настройки ...

// NOTE: If this is not added, I get an error:
//      Unable to find the requested .Net Framework Data Provider.
//      It may not be installed.
// In web.config ...
<system.data>
    <DbProviderFactories>
      <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
      <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
  </system.data>

И, наконец, убедитесь, что я говорю кому-то .. ээ ... этот дополнительный материал ....

// global.asax, in Application_Start().. because i'm caching
// some database data on startup.

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings[0].ConnectionString);
var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
Database.DefaultConnectionFactory = profiled;

LoadApplicationDataToBeCachedForAllRequests(); // Go and hit the Db! Go Forth!!!

О, моя строка подключения ...

<connectionStrings>
    <clear />
    <add name="XWing_SqlServer_EF" connectionString="metadata=res://*/SqlServer.XWingModel.csdl|             
         res://*/SqlServer.XWingModel.ssdl|             
         res://*/SqlServer.XWingModel.msl;provider=System.Data.SqlClient;              
         provider connection string='Data Source=Tarantino;Initial Catalog=XWing;Integrated Security=SSPI;MultipleActiveResultSets=True;'" 
         providerName="System.Data.EntityClient" />
  </connectionStrings>

И наконец (снова), затем edmx info ..

- Entity Container Name: XWingEntities
- Namespace: XWing.Repositories.SqlServer
- Filename: XWingModel.edmx

А теперь умирает котенок, и я пролил много слез: (

enter image description here

Может ли кто-нибудь помочь мне спасти котят, помогая решить эту проблему?

enter image description here

1 Ответ

0 голосов
/ 23 августа 2011

Возможно , что у вас такая же проблема, как у меня здесь . По сути, если класс UnitOfWork не находится в той же сборке, что и edmx, он не будет работать.

...