我正在尝试使用Fluent Nhibernate映射多个表。我的测试给了我以下错误: NHibernate.Exceptions.GenericADOException:无法初始化集合:[FluentWeb.Domain.Employees.Orders#1]
我正在尝试映射Employees和Orders之间的一对多关系。然后订单与产品(NorthWind)有很多关系。这是我的映射..有人可以帮我一把。所有人都在使用HBM
public class EmployeeMap : ClassMap<Employees>
{
public EmployeeMap()
{
Id(x => x.EmployeeID);
Map(x => x.FirstName);
Map(x => x.LastName);
Map(x => x.City);
Map(x => x.HireDate);
Map(x => x.Title);
HasMany(x => x.Orders)
.AsBag().WithForeignKeyConstraintName("EmployeeID")
.Inverse()
.Cascade.All();
}
}
public class OrdersMap : ClassMap<Orders>
{
public OrdersMap()
{
Id(x => x.OrderID);
Map(x => x.OrderDate);
Map(x => x.RequiredDate);
Map(x => x.ShippedDate);
References(x => x.Employee);
HasManyToMany(x => x.Products)
.Cascade.All()
.WithTableName("Order Details");
}
}
public class ProductsMap : ClassMap<Products>
{
public ProductsMap()
{
Id(x => x.ProductID);
Map(x => x.ProductName);
Map(x => x.UnitPrice);
HasManyToMany(x => x.Orders)
.Cascade.All()
.Inverse()
.WithTableName("Order Details");
}
}
如果需要更多信息,请与我们联系。谢谢你的帮助!
-Nick
答案 0 :(得分:2)
表名中的空格通常是一个非常糟糕的主意。如果你不能删除它们,请尝试在反引号中包围表名,这是NHibernate的数据库无关的转义机制。
.WithTableName("`Order Details`');