流畅的NHibernate映射问题

时间:2009-05-10 23:30:48

标签: nhibernate orm fluent-nhibernate mapping

我正在尝试使用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

1 个答案:

答案 0 :(得分:2)

表名中的空格通常是一个非常糟糕的主意。如果你不能删除它们,请尝试在反引号中包围表名,这是NHibernate的数据库无关的转义机制。

.WithTableName("`Order Details`');