1

私はこのタイトルに本当に苦労したので、ここでもっとうまく説明できることを願っています!

ORM として Entity Framework を使用し、依存性注入フレームワークとして Ninject を使用します。DbFactory と UnitOfWork を Ninject でシングルトンとしてバインドします

Bind<IDbFactory>().To<DbFactory>().InSingletonScope();
Bind<IUnitOfWork>().To<UnitOfWork>().InSingletonScope();

現在、MVC プロジェクト内ではこれはうまく機能しますが、API を使用して一部のデータをサーバーにポストし、ページを更新することも必要です。EF がデータベースに再度クエリを実行してデータを取得することを決定するまで、約 10 分かかります。

キャッシュを無効にする以外に、これに対する私の唯一の理論は、Ninject が使用する MVC プロジェクト用のオブジェクトと API 用の別のオブジェクトを作成しているということです。私の質問です。私の理論は正しいですか?もしそうなら、どうすればこれを克服できますか?

編集:モデル例

public class Property
{ 
    public int Id { get; set; }
    public virtual ICollection<PropertyPhoto> PropertyPhotos { get; set; }
    // Blah blah everything else
}

public class PropertyPhoto
{
    public int Id { get; set; }
    // Blah blah everything else
}

現在、API はPropertyPhotoリポジトリを介してモデルを更新していますが、mvc プロジェクトはPropertyモデルを使用しています。

4

1 に答える 1

0

私はスティーブンからのアドバイスを受けてシングルトンスコープを削除しましたが、これによりデータベースからエンティティを削除できなくなり、最終的に使用しました

Bind<IDbFactory>().To<DbFactory>().InThreadScope();
Bind<IUnitOfWork>().To<UnitOfWork>().InThreadScope();
于 2013-05-07T11:16:28.810 に答える