Fluent NHibernate Many to one mapping
- by Jit
I am new to Hibernate world. It may be a silly question, but I am not able to solve it. I am testing many to One relationship of tables and trying to insert record. I have a Department table and Employee table. Employee and Dept has many to One relationship here. I am using Fluent NHibernate to add records. All codes below. Pls help
- SQL Code
create table Dept ( Id int primary
key identity, DeptName varchar(20),
DeptLocation varchar(20)) create table
Employee ( Id int primary key
identity, EmpName varchar(20),EmpAge
int, DeptId int references Dept(Id))
Class Files
public partial class Dept {
public virtual System.String
DeptLocation { get; set; }
public virtual System.String
DeptName { get; set; }
public virtual System.Int32 Id {
get; private set; }
public virtual IList<Employee> Employees { get; set; } }
public partial class Employee {
public virtual System.Int32 DeptId {
get; set; }
public virtual System.Int32 EmpAge {
get; set; }
public virtual System.String EmpName
{ get; set; }
public virtual System.Int32 Id {
get; private set; }
public virtual Project.Model.Dept
Dept { get; set; } }
Mapping Files
public class DeptMapping : ClassMap
{ public
DeptMapping() { Id(x = x.Id);
Map(x = x.DeptName); Map(x =
x.DeptLocation);
HasMany(x = x.Employees)
.Inverse()
.Cascade.All();
} }
public class EmployeeMapping :
ClassMap { public
EmployeeMapping() { Id(x =
x.Id); Map(x = x.EmpName);
Map(x = x.EmpAge); Map(x =
x.DeptId); References(x = x.Dept)
.Cascade.None();
} }
My Code to add
try
{
Dept dept = new Dept();
dept.DeptLocation = "Austin";
dept.DeptName = "Store";
Employee emp = new Employee();
emp.EmpName = "Ron";
emp.EmpAge = 30;
IList<Employee> empList = new List<Employee>();
empList.Add(emp);
dept.Employees = empList;
emp.Dept = dept;
IRepository<Dept> rDept = new Repository<Dept>();
rDept.SaveOrUpdate(dept);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Here i am getting error as
InnerException = {"Invalid column name 'Dept_id'."}
Message = "could not insert: [Project.Model.Employee][SQL: INSERT INTO [Employee] (EmpName, EmpAge, DeptId, Dept_id) VALUES (?, ?, ?, ?); select SCOPE_IDENTITY()]"