سؤال

ولدي جدول يسمى <م> المنتج ولدي جدول <م> StorageHistory .

والآن، المنتج يحتوي على إشارة إلى StorageHistory في انها تعيينات

<set name="StorageHistories" lazy="false">
  <key column="ProductId" />
  <one-to-many class="StorageHistory" />
</set>

وكان يعمل، وعندما كنت استرداد كائن من ORM أحصل على ISET فارغة.

وماذا يعطيني الصداع هو كيفية بناء الكائن في المقام الأول. عندما أفعل ما يلي:

var product = new Product();
session.Save(product);

والممتلكات product.StorageHistories باطل وأحصل على NullReferenceException. لذلك، كيف يمكنني إضافة عناصر إلى أن جمع، أو ينبغي أن تمضي في طريقك لإضافة العناصر StorageHistory أنفسهم إلى DB؟

هل كانت مفيدة؟

المحلول

وأنا دائما القيام بما يلي في المنشئ من الكائن الأصل:

وتاريخها = HashedSet جديدة ()؛

وهذا يغطي حالة حفظ () استخدام. التحميل () / احصل على () الخ نموذج التطبيقي يغطيه NHibernate كما ذكرتم.

نصائح أخرى

لماذا لا؟

private ISet _StorageHistories;
public virtual ISet StorageHistories {
     protected set { _StorageHistories = value;}
     get { if (_StorageHistories == null) _StorageHistories = new HashSet();
           return _StorageHistories;
     }
}

وبالطبع إذا كنت تمر عناء وجود الخاص على أي حال كنت قد وضعت كذلك في المنشئ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top