У меня есть продукты стол:Как извлечь один столбец из другой таблицы, используя Fluent NHibernate
ProductId
ProductDescription
CategoryId
И Категории стол:
CategoryId
CategoryDescription
*** Для каждого продукта, я хотел бы, чтобы отобразить строку так:
Id продукта | Описание продукта | Категория Описание
Мне не удалось сформировать необходимое отображение, необходимое для выполнения вышеуказанной задачи.
Продукты Mapping Я использую:
public ProductsMap()
{
Table("Products");
Id(x => x.ProductId);
Map(x => x.ProductDescription);
Map(x => x.CategoryId);
References(x => x.Categories)
.Column("CategoryId")
.Not.Nullable();
// Need Join() statement here?
...
Мой Продукты Класс:
public class Products
{
public virtual int ProductId { get; set; }
public virtual string ProductDescription { get; set; }
public virtual int CategoryId { get; set; }
public virtual Category Category { get; set; }
public virtual int? CategoryDescription { get; set; } // Not in the db table.
}
Моя цель состоит в том, чтобы иметь CategoryDescription
поле в класс выше будет заполняться автоматически Fluent -NHibernate через указанное отображение.
Я использовал join
заявление, предложенное this answer, но я получил различные исключения для следующего утверждения:
List<Products> products = session.Query<Products>().ToList();
Примечание: Я могу тянуть во всех продуктах из базы данных без соответствующего столбца в таблице Категории , поэтому я знаю, что моя связь с базой данных хороша и что основные функции приложения звучат.
Я новичок в Fluent-NHibernate, потратил немало времени на это, но чувствую, что я никуда не денусь. Буду признателен за руководство.
Огромное спасибо! Оно работает. Теперь я должен понять, как ** это работает! :) Любые хорошие ресурсы, которые вы можете предложить на Fluent-NHibernate? – Sabuncu
PS: Мне пришлось использовать этот ответ: http://stackoverflow.com/a/3402839/360840, чтобы решить проблему с литьем, но кроме этого, это было прекрасно. – Sabuncu
Да, запрос, который я включил, вернет IQueryable. ToList(), ToArray(), ... запустит запрос, заполнив список. – Fran