我使用流利的nhibernate(v1.2)和nhibernate(v3.1),我有一個奇怪的問題。如何在NHibernate中創建非外鍵約束?
我有這個
public class GradeMap : ClassMap<Grade>
{
public GradeMap()
{
Id(x => x.GradeId);
Map(x => x.TaskName).NvarcharWithMaxSize().Not.Nullable();
Map(x => x.Weight).Not.Nullable().Precision(5).Scale(2);
Map(x => x.OutOf).Not.Nullable().Precision(5).Scale(2);
Map(x => x.Mark).Not.Nullable().Precision(5).Scale(2);
Map(x => x.CourseBackgroundColor).Not.Nullable();
Map(x => x.CoursePrefix).Not.Nullable();
References(x => x.Student).Not.Nullable();
References(x => x.Course);
}
}
public class CourseMap : ClassMap<Course>
{
public CourseMap()
{
Id(x => x.Id).Column("CourseId");
Map(x => x.Prefix).NvarcharWithMaxSize().Not.Nullable();
HasMany(x => x.Tasks).Cascade.Delete().Inverse();
HasMany(x => x.CoursePermissions).Cascade.All().Inverse();
HasMany(x => x.CourseSharing).Cascade.All().Inverse();
HasMany(x => x.Grades).Cascade.None().Inverse();
}
}
我那麼做這樣的事情
return session.Query<Grade>().ToList();
如果我想嘗試搶歡迎使用屬性,如Grade.Course.Id
它會崩潰,我會得到。
Grade.Course = {Castle.Proxies.CourseProxy}
Grade.Course.Id = '((new System.Collections.Generic.Mscorlib_CollectionDebugView<OnlGrade>(grades)).Items[0].Course).Id' threw an exception of type 'NHibernate.ObjectNotFoundException'
Grade.Course.Prefix = above error except .Prefix instead of .Id
我本來以爲課程對象是空的或空的。並不是說它會有一些代理與所有屬性拋出異常。
編輯
我發現這個帖子,但是我沒有這個屬性了,所以也許他們擺脫它或移動它。
有人知道嗎?
請問您能否顯示TableA和TableB的完整映射,例如Id映射很有趣。你使用什麼版本的NH和FNH?這是什麼意思「如果我做這個TableA.TableB.Id ...」? – 2011-05-09 18:56:01
@Jakub Linhart - 更新。 – chobo2 2011-05-09 19:08:01