2011-01-12 14 views
0

ユーザーコントロールの内部で使用されているときにARが適切に初期化されていない理由はありますか?私の親フォームが正常に照会できるので、私の初期化は正しくAFAIKで実行されています。しかし、ユーザーコントロール内でクエリを実行しようとすると、Warning 1 An ActiveRecord class (Binder) was used but the framework seems not properly initialized. Did you forget about ActiveRecordStarter.Initialize() ? 0 0と表示されます。私のユーザーコントロールをフォームにドラッグするのを止める。それが役に立つなら、私はProgram.Main()でARを初期化します。ここでユーザーコントロールで初期化されていませんか?

がスタックトレースです:

at Castle.ActiveRecord.ActiveRecordBase.EnsureInitialized(Type type) 
at Castle.ActiveRecord.ActiveRecordBase.FindAll(Type targetType, DetachedCriteria detachedCriteria, Order[] orders) 
at Castle.ActiveRecord.ActiveRecordBase.FindAll(Type targetType) 
at Castle.ActiveRecord.ActiveRecordBase`1.FindAll() 
at TxLocates.BinderTabReferenceControl.BinderTabReferenceControl_Load(Object sender, EventArgs e) in C:\dev\TxLocates\src\TxLocates\BinderTabReferenceControl.cs:line 56 
at System.Windows.Forms.UserControl.OnLoad(EventArgs e) 
at System.Windows.Forms.UserControl.OnCreateControl() 
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 
at System.Windows.Forms.Control.CreateControl() 
at System.Windows.Forms.Control.ControlCollection.Add(Control value) 
at System.Windows.Forms.Form.ControlCollection.Add(Control value) 
at System.Windows.Forms.Design.ControlDesigner.DesignerControlCollection.Add(Control c) 

答えて

2

Visual Studioのデザイナでは、ユーザーコントロールの読み込み時に実行されますが、Program.Main()を実行しません。したがって、ActiveRecordはデザイナーのコンテキストでは初期化されません。

回避方法:ActiveRecord関連コードの実行を避けるために、DesignMode propertyを使用してデザインモードを検出するか、別のイベントからActiveRecordを呼び出すようにしてください。

+0

意味があります。ありがとう、マウリシオ。 – Mike

関連する問題