首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让MvcMiniProfiler使用EF4.1和我们的存储库模式时遇到的问题

让MvcMiniProfiler使用EF4.1和我们的存储库模式时遇到的问题
EN

Stack Overflow用户
提问于 2011-08-23 07:59:05
回答 1查看 235关注 0票数 2

我们遇到了很多问题,试图让MvcMiniProfiler与我们的EF实现的仓库模式。

错误:

实体类型CustomEntityPewPewFooFoo不是当前上下文模型的一部分。

好的。这就是我们所做的代码。

自定义UnitOfWork上下文类

代码语言:javascript
复制
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() { ... }
}

加上工厂设置..。

代码语言:javascript
复制
// 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>

最后,再加上这些额外的东西..。

代码语言:javascript
复制
// 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!!!

我的连接线..。

代码语言:javascript
复制
<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信息。

代码语言:javascript
复制
- Entity Container Name: XWingEntities
- Namespace: XWing.Repositories.SqlServer
- Filename: XWingModel.edmx
EN

回答 1

Stack Overflow用户

发布于 2011-08-23 10:56:15

这可能是因为你有同样的问题,我有here。基本上,如果UnitOfWork类与edmx不在同一个程序集中,它将无法工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7157877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档