BusinessObject
Public Class Employee
{
public virtual int Id {get; set;}
public virtual string Name {get; set;}
public virtual string Address {get; set;}
}
Domain Model :
Public Class Employee
{
public virtual int Id {get; set;}
public virtual string Name {get; set;}
public virtual string Address {get; set;}
Public IList<Employee> Managers {get;set;}
}
Scenario :1
One employee can have more than one Manager , Manager is also an employee . Fluent Nhibernate takes care of the self-reference of the object .Here in the business model we have the many-to-many relationship.
But in this Domain Model Employee object has self-reference .
Solution :1
Mapping :
Public class EmployeeManagermap : ClassMap
{
Public EmployeeManagermap()
{
Id(x => x.Id,”EmployeeId”);
map(x=> x.Name ,”EmployeeName”);
HasManyToMany(x => x.Managers)
.ParentKeyColumn(“EmployeeId”)
.ChildKeyColumn(“ManagerID”)
.Table(“EmployeeManagers”);
}
}
The above mapping will create a Table EmployeeManagers which will have two columns EmployeeId and ManagerId.
That’s it .
Hope this help to someone . If you face some problem to implement any Nhibernate mapping scenario , you can contact me. 🙂
Hi,
I’m a bit confused. Would you keep both these classes in your project? The business object class, and the domain model class? It would be nice to hear some discussion around that. I can see how m:m maps in a bi-directional class references are present; We have both Employee.Managers, and Manager.Employees. But what if the class references are uni-directional?
I think you understand m:m mapping in the above piece of code. Now you want the same Uni-directional
You can refer here
http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/05/14/how-to-map-a-tree-in-nhibernate.aspx
You can also have a look on the sample code also :
http://hibernatingrhinos.googlecode.com/svn/trunk/TreeStructure/
If you still have some problem to understand/implement the scenario you want, please share your problem. I believe we will be able to find a s0lution for it.
Have nice day.
You can have a look at my new post for Selfreference unidirectional
https://d4dilip.wordpress.com/2011/02/06/nhibernate-self-reference-uni-directional/