2

mvcアプリケーションでmvc-mini-profilerを使用しようとしています。コンテキストのラッパーを作成し、CastleWindsorがインスタンスを作成します。ただし、「スペース'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 に答える