2011-06-27 14 views
1

なぜこの問題が発生しているのか理解できません。何か間違いがある場合は、私に知らせてください。私はこのトピックについて非常に新しいです。私はこのコードをしようとしている今FluentとNhibernateの読み込みコレクションへの不正なアクセス

public class Department 
{ 
    public virtual int Dept_id { get; set; } 
    public virtual String Dept_name { get; set; } 
    public virtual IList<Student> Students { get; set; } 
    //public virtual ICollection<Student> Students { get; set; } 
    public Department() 
    { 
     Students = new List<Student>(); 
    } 
} 
public class Student 
{ 
    public Student() 
    { 

    } 
    //private int _Dept_id; 
    //public virtual Guid StudentId { get; set; } 
    public virtual Guid StudentId { get; set; } 
    /*public virtual int Dept_id 
    { 
     get { return this._Dept_id; } 
     set { this._Dept_id = value; } 
    }*/ 
    public virtual int Dept_id { get; set; } 
    public virtual String Name { get; set; } 
    public virtual int Age { get; set; } 
    public virtual String Address { get; set; } 

    public virtual Department Department { get; set; } 
} 
public class DepartmentMap : ClassMap<Department> 
{ 
    public DepartmentMap() 
    { 
     Table("Department"); 
     Id(x => x.Dept_id).Column("Dept_id"); 
     Map(x => x.Dept_name).Column("Dept_name"); 

     HasMany(x => x.Students).KeyColumn("Student_id").Inverse() 
      .Cascade.All(); 

    } 
} 
public class StudentMap :ClassMap<Student> 
{ 
    public StudentMap() 
    { 
     Table("Student"); 
     Id(x => x.StudentId).Column("Student_id").GeneratedBy.GuidComb(); 

     Map(x => x.Name); 
     Map(x => x.Age); 
     Map(x => x.Address);   

     References(x => x.Department).Column("Dept_id") 
      .Not.Nullable().Not.LazyLoad(); 
    } 
} 

[WebMethod(EnableSession = true)] 
    public List<Student> Students() 
    { 
     IList<Student> student = new List<Student>(); 
     ISession session = NHibernateHelper.OpenSession(); 
     student = session.Query<Student>().ToList(); 

     return student.ToList(); 
    } 

それは

ロードコレクションに

不正アクセス

として、部門内の学生のリストを読み込むにエラーが発生しますこのコードには何がないのですか?これはなぜ起こっていますか?

答えて

2

ごめんなさい!それが働いて作られた私が作ったcetain変更が...ある下記のアイデアの見かけ上の欠点のかわからないけれども

変更された学生のクラスとして:

として参照のため

public class Student 
{ 
    public Student() 
    { 

    } 

    public virtual Guid StudentId { get; set; } 
    public virtual int Dept_id 
    { 
     get { return Department.Dept_id; } 
     set { this.Dept_id = Department.Dept_id; } 
    } 

    public virtual String Name { get; set; } 
    public virtual int Age { get; set; } 
    public virtual String Address { get; set; } 

    public virtual Department Department { get; set; } 
} 

と学生のマッピング

参照(x => x.Department).Column( "Dept_id")。Cascade.All();

注が

単一の部門IDマッピングしないとしてDepartmentMapを変更しなければならない:

public DepartmentMap() 
    { 
     Table("Department"); 
     Id(x => x.Dept_id).Column("Dept_id"); 
     Map(x => x.Dept_name).Column("Dept_name"); 


     HasMany(x => x.Students).KeyColumn("Dept_id").AsBag(); 

    } 
関連する問題