0
我有以下情況。我有一個Movie對象,它包含一個字符列表,並且每個字符都有一個人(actor)。另外,我希望演員對象包含一個字符列表。多對多映射問題 - 子集合始終爲空
我已經在fluent-nhibernate中設置了我的映射,除了Person.Characters集合總是空的,一切看起來都很完美。奇怪的是Characters.Person對象填充正確,並且Movie.Characters集合正確填充。這只是Person.Characters始終保持空白。
下面是我使用的映射:
public class MovieMap : ClassMap<Movie>
{
public MovieMap()
{
Id(x => x.Id, "movie_id")
.GeneratedBy.Assigned();
Map(x => x.Title);
HasMany<Character>(x => x.Characters)
.KeyColumn("movie_id")
.Inverse()
.Cascade.All()
.Not.LazyLoad();
}
}
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(x => x.Id, "person_id")
.GeneratedBy.Assigned();
Map(x => x.Name);
HasMany<Character>(x => x.Characters)
.KeyColumn("person_id")
.Inverse()
.Cascade.All()
.Not.LazyLoad();
}
}
public class CharacterMap : ClassMap<Character>
{
public CharacterMap()
{
Id(x => x.Id)
.GeneratedBy.Native();
Map(x => x.Name);
References(x => x.Movie, "movie_id")
.ForeignKey("movie_id")
.Cascade.All();
References(x => x.Person, "person_id")
.ForeignKey("person_id")
.Cascade.All();
}
}
這裏是我的課:
public class Person
{
public Person(int id)
{
Id = id;
Characters = new List<Character>();
}
public virtual long Id { get; private set; }
public virtual string Name { get; set; }
public virtual IList<Character> Characters { get; set; }
}
public class Movie
{
public Movie(int Id)
{
Id = id;
Characters = new List<Character>();
}
public virtual long Id { get; private set; }
public virtual string Title { get; set; }
public virtual IList<Character> Characters { get; set; }
}
public class Character
{
public Character()
{
}
public virtual int Id { get; private set; }
public virtual Movie Movie { get; set; }
public virtual Person Person { get; set; }
public virtual string Name { get; set; }
}
檢索單個actor會生成一個已填充的actor對象,但Actor.Characters列表爲空。 檢索單個字符會生成正確填充的字符對象,且Character.Actor已填充,但Character.Actor.Characters列表爲空。 – 2010-05-06 20:07:17