我有以下類和關聯的映射(功能NHibernate):NHibernate的不加載子對象
public class Category
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual Category ParentCategory { get; set; }
public virtual IList<Category> ChildCategories { get; set; }
}
映射:
public class CategoryMap : ClassMap<Category>
{
public CategoryMap()
{
Table("Categories");
Id(x => x.Id).Column("Id").CustomType("Int32").Access.Property()
.CustomSqlType("int").Not.Nullable().Precision(10)
.GeneratedBy.Identity();
Map(x => x.Description).Column("Description").Nullable()
.Generated.Never().CustomType(typeof (string)).Access
.Property().Length(250);
Map(x => x.Name).Not.Nullable().Generated.Never().CustomType("string")
.Access.Property().Column("Name").Length(50);
References(x => x.ParentCategory).Column("ParentCategoryId");
HasMany(x => x.ChildCategories).KeyColumn("ParentCategoryId").Inverse()
.AsBag().Fetch.Select();
}
}
我創建了兩個Category
對象如下:
var c = new Category
{
Name = "Ebooks",
Description = "Contains awz, mobi, pdf, epub and other
electronic books"
};
var cc = new Category
{
Name = "Kindle Books",
Description = "Contains Kindle ebook reader format books
(awz, mobi)",
ParentCategory = c
};
session.SaveOrUpdate(c);
session.SaveOrUpdate(cc);
當我嘗試訪問保存的對象時:
var c = session.Load<Category>(1);
var cc = c.ChildCategories;
c
包含的1 Id
但其ChildCategories
屬性是null
的Category
對象。
我做錯了什麼?
PS: - 這是我的第一個實驗NHibernate
等與Fluent NHibernate
。
編輯: -下面的東西的工作。我需要關閉會議,然後再次打開閱讀。否則,它只是從內存中讀取,因爲@Holf指出我需要添加Child Category
到Category
如:
c.ChilCategories.Add(cc);
我只是做了如下:
'Fetch.Select()'只是在黑暗中拍攝,如果你改變它沒有工作:( – TheVillageIdiot
會發生什麼'session.Load(1)''到session.Get (1)'? –
Rippo
@TheVillageIdiot非常感謝這個,我很驚訝我之前沒有遇到過這個問題(雖然以前可能會被黑客入侵),但重新開放會話完全可以解決這個問題 –