Свободное отображение карт NHibernate - PullRequest
4 голосов
/ 11 мая 2009

Я пытаюсь отобразить несколько таблиц, используя Fluent Nhibernate. Мои тесты дают мне следующую ошибку: NHibernate.Exceptions.GenericADOException: не удалось инициализировать коллекцию: [FluentWeb.Domain.Employees.Orders # 1]

Я пытаюсь сопоставить отношения «один ко многим» между сотрудниками и заказами. Заказы тогда имеют много-много отношений с продуктами (NorthWind). Вот мои сопоставления .. Может кто-нибудь помочь мне. Все работало с HBMs

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 Ответ

2 голосов
/ 11 мая 2009

Пробелы в именах таблиц обычно довольно плохая идея. Если вы не можете удалить их, попробуйте заключить имена таблиц в кавычки, что является механизмом независимого экранирования базы данных NHibernate.

.WithTableName("`Order Details`');
...