2

我正在尝试在我的 mvc 应用程序中使用 mvc-mini-profiler。我为我的上下文创建了一个包装器,Castle Windsor 创建了该实例。但是,我收到错误“空间 'SSpace' 没有关联的集合”。edmx 在程序集 A 中,DigidosEntities 在程序集 B 中,这是在程序集 C 中。知道可能是什么问题吗?我得到了最新版本的分析器。

public interface IDataStore : IDisposable
{
    int SaveChanges(int personId);
    IObjectSet<TEntity> CreateObjectSet<TEntity>() where TEntity : class;
}
public class ProfiledDigidosEntities : IDataStore, IDisposable
{
    private DigidosEntities _context = null;
    public ProfiledDigidosEntities()
    {
        var connectionString = ConfigurationManager.ConnectionStrings["DigidosEntities"].ConnectionString;
        var connection = new EntityConnection(connectionString);
        var conn = ProfiledDbConnection.Get(connection);
        _context = ObjectContextUtils.CreateObjectContext<DigidosEntities>(conn);  /* Error: The space 'SSpace' has no associated collection */
    }
    public void Dispose()
    {
        if (_context != null)
            _context.Dispose();
    }
    public int SaveChanges(int personId)
    {
        return _context.SaveChanges(personId);
    }
    public IObjectSet<TEntity> CreateObjectSet<TEntity>() where TEntity : class
    {
        return _context.CreateObjectSet<TEntity>();
    }
}
4

1 回答 1

2

好的,这是我的问题:分析器想要一个工作区来建立一个新的分析连接,工作区是通过这个方法创建的(在 ObjectContextUtils.cs 中):

   static MetadataCache()
    {
        workspace  = new System.Data.Metadata.Edm.MetadataWorkspace(
          new string[] { "res://*/" },
          new Assembly[] { typeof(U).Assembly });
    }

如您所见,它将在您要创建的类型的程序集中搜索。由于在我的情况下模型的类型不在同一个程序集中,因此工作区的创建失败。将 DigidosEntities 移动到与 edmx 相同的程序集修复它。

于 2011-08-13T10:33:30.810 回答