2012-04-02 8 views
4

Unityに設定エラーがあります。 このために、私はhttp://unitymvc3.codeplex.com/を実装しようとしていますが、私は今stucked午前:ユニティとライフタイム管理の設定 - 常に一時的なライフタイムマネージャ

私の団結の構成では、私は、この設定を持っている:

<register type="IMainDbContext" mapTo="WorkflowContext"> 
    <lifetime type="hierarchical" /> 
    <constructor></constructor> 
    </register> 

しかし結束を作成する時には、(私のシンプルコードはここにある:)

UnityConfigurationSection section = ConfigurationManager.GetSection("unity") as UnityConfigurationSection; 
     if (section != null) 
     { 
      section.Configure(container); 
     } 

     this.container = container; 

すべてがLifetimeManagerType = {Name = "TransientLifetimeManager" FullName = "Microsoft.Practices.Unity.TransientLifetimeManager"}を持っ登録「IManDbContext」のを除いて、偉大設定されているが、それはhierarchical lifetime manager

する必要があります

あなたは階層的な生涯マネージャーが欲しいという統一性(コードではなく構成)を教えてください。 ありがとうございます。

答えて

2

私のエラーは、このエラーによって引き起こされた私が悪かったこの構成を、使用していた場合は

<register type="IMainDbContext" mapTo="WorkflowContext"> 
    <lifetime type="hierarchical" /> 
    <constructor></constructor> 
</register> 

<register type="IReportDbContext" mapTo="SomeBadContext"> 
    <lifetime type="hierarchical" /> 
    <constructor></constructor> 
</register> 

、団結シンプルな `tのはどんな生涯を設定しますマネージャー。私はこれらの文脈の権利を設定した後、統一は私の生涯のマネージャー構成をちょうど正しいものにしました。

0

私はあなたができるとは思わない。ライフタイムタイプを指定する場合は、 "シングルトン"または "外部"(外部のカスタムライフタイム)を指定する必要があります。あなたが複数のユニティコンテナを使用している場合を除き、これを保証するために設計されたとして、公正で

Link to Unity Schema Documentation

は、私はあなたがだけあなたのタイプの1つのインスタンスを持っていることを、階層的な寿命管理を持つの値が表示されませんメインユニティコンテナでインスタンス化され、子コンテナから生成されます。

したがって、子コンテナの生成を計画していて、IMainDbContextのプレーン化オブジェクトの別のインスタンスを必要としない限り、「シングルトン」ライフタイムマネージャを使用することもできます。私は複数のDbContextを持って 、彼らはひどく構成されました:

+0

古い設定スキーマのために指し示したドキュメンテーションのリンクで、ページの上部に古いものとして明確にマークされています。設定で階層を指定することができます。デフォルトのエイリアスです。詳細については、[既定のエイリアスの一覧](http://msdn.microsoft.com/en-us/library/ff660933(v = pandp.20).aspx)を参照してください。 –

+0

よくお世話になりました、私は確かに階層ライフタイムマネージャを使用することができます購入してください。最終的に私の愚かさによって引き起こされました。なぜなら、私はもっと多くのDBコンテキストを使用していて、彼らはひどく構成されていたからです。 – clpx

+0

解決策は何ですか?自分の質問に対する回答として投稿する必要があります –

関連する問題